adelapena commented on code in PR #2310:
URL: https://github.com/apache/cassandra/pull/2310#discussion_r1224504761
##########
test/unit/org/apache/cassandra/utils/AbstractTypeGenerators.java:
##########
@@ -215,24 +628,48 @@ public static Gen<UserType>
userTypeGen(Gen<AbstractType<?>> elementGen)
}
public static Gen<UserType> userTypeGen(Gen<AbstractType<?>> elementGen,
Gen<Integer> sizeGen)
+ {
+ return userTypeGen(elementGen, sizeGen, IDENTIFIER_GEN);
+ }
+
+ public static Gen<UserType> userTypeGen(Gen<AbstractType<?>> elementGen,
Gen<Integer> sizeGen, Gen<String> ksGen)
+ {
+ return userTypeGen(elementGen, sizeGen, ksGen, IDENTIFIER_GEN);
+ }
+
+ public static Gen<UserType> userTypeGen(Gen<AbstractType<?>> elementGen,
Gen<Integer> sizeGen, Gen<String> ksGen, Gen<String> nameGen)
+ {
+ return userTypeGen(elementGen, sizeGen, ksGen, nameGen, BOOLEAN_GEN);
+ }
+
+ public static Gen<UserType> userTypeGen(Gen<AbstractType<?>> elementGen,
Gen<Integer> sizeGen, Gen<String> ksGen, Gen<String> nameGen, Gen<Boolean>
multiCellGen)
{
Gen<FieldIdentifier> fieldNameGen =
IDENTIFIER_GEN.map(FieldIdentifier::forQuoted);
return rnd -> {
- boolean multiCell = BOOLEAN_GEN.generate(rnd);
+ boolean multiCell = multiCellGen.generate(rnd);
int numElements = sizeGen.generate(rnd);
List<AbstractType<?>> fieldTypes = new ArrayList<>(numElements);
LinkedHashSet<FieldIdentifier> fieldNames = new
LinkedHashSet<>(numElements);
- String ks = IDENTIFIER_GEN.generate(rnd);
- ByteBuffer name =
AsciiType.instance.decompose(IDENTIFIER_GEN.generate(rnd));
+ String ks = ksGen.generate(rnd);
+ String name = nameGen.generate(rnd);
+ ByteBuffer nameBB = AsciiType.instance.decompose(name);
Gen<FieldIdentifier> distinctNameGen =
Generators.filter(fieldNameGen, 30, e -> !fieldNames.contains(e));
// UDTs don't allow duplicate names, so make sure all names are
unique
for (int i = 0; i < numElements; i++)
{
- fieldTypes.add(elementGen.generate(rnd));
- fieldNames.add(distinctNameGen.generate(rnd));
+ FieldIdentifier fieldName = distinctNameGen.generate(rnd);
+ fieldNames.add(fieldName);
+
+ AbstractType<?> element = elementGen.generate(rnd);
+ if (!multiCell)
+ element = element.freeze();
+ // a UDT cannot contain a non-frozen UDT; as defined by
CreateType
+ if (element.isUDT())
Review Comment:
I think a UDT cannot contain any kind or non-frozen data, which also
includes collections. So it would be:
```suggestion
// a UDT cannot contain a non-frozen UDT or collection; as
defined by CreateType
if (element.isMultiCell())
```
That seems to solve some of the failures seen on
https://app.circleci.com/pipelines/github/adelapena/cassandra/2941/workflows/d3c4d62d-5c29-4445-ad75-ff25d4b40654/jobs/49099/tests
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]