|
26 | 26 | import org.apache.cassandra.cql3.QueryOptions;
|
27 | 27 | import org.apache.cassandra.exceptions.ConfigurationException;
|
28 | 28 | import org.apache.cassandra.exceptions.InvalidRequestException;
|
| 29 | +import org.apache.cassandra.exceptions.RequestValidationException; |
29 | 30 | import org.apache.cassandra.transport.Message;
|
30 | 31 | import org.apache.cassandra.transport.ProtocolVersion;
|
31 | 32 | import org.apache.cassandra.transport.SimpleClient;
|
@@ -123,44 +124,51 @@ public void testCreateTableOnAllClusteringColumns()
|
123 | 124 | public void testCreateTableErrorOnNonClusteringKey()
|
124 | 125 | {
|
125 | 126 | String expectedMessage = "Only clustering key columns can be defined in CLUSTERING ORDER directive";
|
126 |
| - expectedFailure("CREATE TABLE %s (pk int, ck1 int, ck2 int, v int, PRIMARY KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (ck1 ASC, ck2 DESC, v ASC);", |
| 127 | + expectedFailure(InvalidRequestException.class, "CREATE TABLE %s (pk int, ck1 int, ck2 int, v int, PRIMARY KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (ck1 ASC, ck2 DESC, v ASC);", |
127 | 128 | expectedMessage+": [v]");
|
128 |
| - expectedFailure("CREATE TABLE %s (pk int, ck1 int, ck2 int, v int, PRIMARY KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (v ASC);", |
| 129 | + expectedFailure(InvalidRequestException.class, "CREATE TABLE %s (pk int, ck1 int, ck2 int, v int, PRIMARY KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (v ASC);", |
129 | 130 | expectedMessage+": [v]");
|
130 |
| - expectedFailure("CREATE TABLE %s (pk int, ck1 int, ck2 int, v int, PRIMARY KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (pk ASC);", |
| 131 | + expectedFailure(InvalidRequestException.class, "CREATE TABLE %s (pk int, ck1 int, ck2 int, v int, PRIMARY KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (pk ASC);", |
131 | 132 | expectedMessage+": [pk]");
|
132 |
| - expectedFailure("CREATE TABLE %s (pk int, ck1 int, ck2 int, v int, PRIMARY KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (pk ASC, ck1 DESC);", |
| 133 | + expectedFailure(InvalidRequestException.class, "CREATE TABLE %s (pk int, ck1 int, ck2 int, v int, PRIMARY KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (pk ASC, ck1 DESC);", |
133 | 134 | expectedMessage+": [pk]");
|
134 |
| - expectedFailure("CREATE TABLE %s (pk int, ck1 int, ck2 int, v int, PRIMARY KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (ck1 ASC, ck2 DESC, pk DESC);", |
| 135 | + expectedFailure(InvalidRequestException.class, "CREATE TABLE %s (pk int, ck1 int, ck2 int, v int, PRIMARY KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (ck1 ASC, ck2 DESC, pk DESC);", |
135 | 136 | expectedMessage+": [pk]");
|
136 |
| - expectedFailure("CREATE TABLE %s (pk int, ck1 int, ck2 int, v int, PRIMARY KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (pk DESC, v DESC);", |
| 137 | + expectedFailure(InvalidRequestException.class, "CREATE TABLE %s (pk int, ck1 int, ck2 int, v int, PRIMARY KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (pk DESC, v DESC);", |
137 | 138 | expectedMessage+": [pk, v]");
|
138 |
| - expectedFailure("CREATE TABLE %s (pk int, ck1 int, ck2 int, v int, PRIMARY KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (pk DESC, v DESC, ck1 DESC);", |
| 139 | + expectedFailure(InvalidRequestException.class, "CREATE TABLE %s (pk int, ck1 int, ck2 int, v int, PRIMARY KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (pk DESC, v DESC, ck1 DESC);", |
139 | 140 | expectedMessage+": [pk, v]");
|
140 |
| - expectedFailure("CREATE TABLE %s (pk int, ck1 int, ck2 int, v int, PRIMARY KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (ck1 ASC, v ASC);", |
| 141 | + expectedFailure(InvalidRequestException.class, "CREATE TABLE %s (pk int, ck1 int, ck2 int, v int, PRIMARY KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (ck1 ASC, v ASC);", |
141 | 142 | expectedMessage+": [v]");
|
142 |
| - expectedFailure("CREATE TABLE %s (pk int, ck1 int, ck2 int, v int, PRIMARY KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (v ASC, ck1 DESC);", |
| 143 | + expectedFailure(InvalidRequestException.class, "CREATE TABLE %s (pk int, ck1 int, ck2 int, v int, PRIMARY KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (v ASC, ck1 DESC);", |
143 | 144 | expectedMessage+": [v]");
|
144 | 145 | }
|
145 | 146 |
|
146 | 147 | @Test
|
147 | 148 | public void testCreateTableInWrongOrder()
|
148 | 149 | {
|
149 |
| - expectedFailure("CREATE TABLE %s (pk int, ck1 int, ck2 int, v int, PRIMARY KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (ck2 ASC, ck1 DESC);", |
| 150 | + expectedFailure(InvalidRequestException.class, "CREATE TABLE %s (pk int, ck1 int, ck2 int, v int, PRIMARY KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (ck2 ASC, ck1 DESC);", |
150 | 151 | "The order of columns in the CLUSTERING ORDER directive must match that of the clustering columns");
|
151 | 152 | }
|
152 | 153 |
|
153 | 154 | @Test
|
154 | 155 | public void testCreateTableWithMissingClusteringColumn()
|
155 | 156 | {
|
156 |
| - expectedFailure("CREATE TABLE %s (pk int, ck1 int, ck2 int, v int, PRIMARY KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (ck2 ASC);", |
| 157 | + expectedFailure(InvalidRequestException.class, "CREATE TABLE %s (pk int, ck1 int, ck2 int, v int, PRIMARY KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (ck2 ASC);", |
157 | 158 | "Missing CLUSTERING ORDER for column ck1");
|
158 | 159 | }
|
159 | 160 |
|
160 |
| - private void expectedFailure(String statement, String errorMsg) |
| 161 | + @Test |
| 162 | + public void testInvalidCompactionOptions() |
| 163 | + { |
| 164 | + expectedFailure(ConfigurationException.class, "CREATE TABLE %s (k int PRIMARY KEY, v int) WITH compaction = {'class': 'LeveledCompactionStrategy', 'fanout_size': '90', 'sstable_size_in_mb': '1089'}", |
| 165 | + "your maxSSTableSize must be absurdly high to compute"); |
| 166 | + } |
| 167 | + |
| 168 | + private void expectedFailure(final Class<? extends RequestValidationException> exceptionType, String statement, String errorMsg) |
161 | 169 | {
|
162 | 170 |
|
163 |
| - assertThatExceptionOfType(InvalidRequestException.class) |
| 171 | + assertThatExceptionOfType(exceptionType) |
164 | 172 | .isThrownBy(() -> createTableMayThrow(statement)) .withMessageContaining(errorMsg);
|
165 | 173 | }
|
166 | 174 | }
|
0 commit comments