@@ -84,10 +84,37 @@ public static ObjectDefinition dummyVersionForType(ObjectDefinition definition)
84
84
case CUSTOM : return nextCustomDef (definition );
85
85
case STORAGE : return nextStorageDef (definition );
86
86
case SCHEMA : return nextSchemaDef (definition );
87
+ case FILE : return nextFileDef (definition );
88
+
89
+ case FLOW :
90
+ case JOB :
91
+
92
+ return definition ;
93
+
94
+ default :
95
+ throw new RuntimeException ("No second version available in dummy data for object type " + objectType .name ());
96
+ }
97
+ }
98
+
99
+ public static ObjectDefinition dummyBadVersionForType (ObjectDefinition definition ) {
100
+
101
+ // Not all object types have semantics defined for versioning
102
+ // It is sometimes helpful to create versions anyway for testing
103
+ // E.g. to test that version increments are rejected for objects that don't support versioning!
104
+
105
+ var objectType = definition .getObjectType ();
106
+
107
+ switch (objectType ) {
108
+
109
+ case DATA : return nextBadDataDef (definition );
110
+ case MODEL : return nextBadModelDef (definition );
111
+ case CUSTOM : return nextBadCustomDef (definition );
112
+ case STORAGE : return nextBadStorageDef (definition );
113
+ case SCHEMA : return nextBadSchemaDef (definition );
114
+ case FILE : return nextBadFileDef (definition );
87
115
88
116
case FLOW :
89
117
case JOB :
90
- case FILE :
91
118
92
119
return definition ;
93
120
@@ -185,6 +212,16 @@ public static ObjectDefinition nextDataDef(ObjectDefinition origDef) {
185
212
.build ();
186
213
}
187
214
215
+ public static ObjectDefinition nextBadDataDef (ObjectDefinition origDef ) {
216
+
217
+ var newSchema = changeBadSchemaField (origDef .getData ().getSchema ());
218
+
219
+ return origDef .toBuilder ()
220
+ .setData (origDef .getData ().toBuilder ()
221
+ .setSchema (newSchema ))
222
+ .build ();
223
+ }
224
+
188
225
public static ObjectDefinition dummySchemaDef () {
189
226
190
227
var dataDef = dummyDataDef ();
@@ -202,6 +239,13 @@ public static ObjectDefinition nextSchemaDef(ObjectDefinition origDef) {
202
239
.build ();
203
240
}
204
241
242
+ public static ObjectDefinition nextBadSchemaDef (ObjectDefinition origDef ) {
243
+
244
+ return origDef .toBuilder ()
245
+ .setSchema (changeBadSchemaField (origDef .getSchema ()))
246
+ .build ();
247
+ }
248
+
205
249
private static SchemaDefinition addFieldToSchema (SchemaDefinition origSchema ) {
206
250
207
251
var fieldName = "extra_field_" + (origSchema .getTable ().getFieldsCount () + 1 );
@@ -219,6 +263,19 @@ private static SchemaDefinition addFieldToSchema(SchemaDefinition origSchema) {
219
263
.build ();
220
264
}
221
265
266
+ private static SchemaDefinition changeBadSchemaField (SchemaDefinition origSchema ) {
267
+
268
+ var originalField = origSchema .getTable ().getFields (0 );
269
+ var newField = originalField .toBuilder ()
270
+ .setFieldType (BasicType .DATE )
271
+ .build ();
272
+
273
+ return origSchema .toBuilder ()
274
+ .setTable (origSchema .getTable ().toBuilder ()
275
+ .setFields (0 , newField ))
276
+ .build ();
277
+ }
278
+
222
279
public static ObjectDefinition dummyStorageDef () {
223
280
224
281
var storageTimestamp = OffsetDateTime .now ();
@@ -265,6 +322,26 @@ public static ObjectDefinition nextStorageDef(ObjectDefinition definition) {
265
322
.build ();
266
323
}
267
324
325
+ public static ObjectDefinition nextBadStorageDef (ObjectDefinition definition ) {
326
+
327
+ var originalItem = definition .getStorage ().getDataItemsOrThrow ("dummy_item" );
328
+ var originalCopy = originalItem .getIncarnations (0 ).getCopies (0 );
329
+
330
+ var newCopy = originalCopy .toBuilder ()
331
+ .setStorageFormat ("PARQUET" )
332
+ .build ();
333
+
334
+ var newItem = originalItem .toBuilder ()
335
+ .setIncarnations (0 , originalItem .getIncarnations (0 ).toBuilder ()
336
+ .setCopies (0 , newCopy ))
337
+ .build ();
338
+
339
+ return definition .toBuilder ()
340
+ .setStorage (definition .getStorage ().toBuilder ()
341
+ .putDataItems ("dummy_item" , newItem ))
342
+ .build ();
343
+ }
344
+
268
345
public static ObjectDefinition dummyModelDef () {
269
346
270
347
return ObjectDefinition .newBuilder ()
@@ -315,6 +392,15 @@ public static ObjectDefinition nextModelDef(ObjectDefinition origDef) {
315
392
.build ();
316
393
}
317
394
395
+ public static ObjectDefinition nextBadModelDef (ObjectDefinition origDef ) {
396
+
397
+ return origDef .toBuilder ()
398
+ .setModel (origDef .getModel ()
399
+ .toBuilder ()
400
+ .setPath ("altered/layout/src" ))
401
+ .build ();
402
+ }
403
+
318
404
public static ObjectDefinition dummyFlowDef () {
319
405
320
406
return ObjectDefinition .newBuilder ()
@@ -374,6 +460,27 @@ public static ObjectDefinition dummyFileDef() {
374
460
.build ();
375
461
}
376
462
463
+ public static ObjectDefinition nextFileDef (ObjectDefinition origDef ) {
464
+
465
+ return origDef .toBuilder ()
466
+ .setFile (origDef .getFile ().toBuilder ()
467
+ .setName ("magic_template_v2_updated" ) // File names are likely to be changed with suffixes etc
468
+ .setSize (87533 )
469
+ .setDataItem ("file/FILE_ID/version-2" ))
470
+ .build ();
471
+ }
472
+
473
+ public static ObjectDefinition nextBadFileDef (ObjectDefinition origDef ) {
474
+
475
+ return origDef .toBuilder ()
476
+ .setFile (origDef .getFile ().toBuilder ()
477
+ .setExtension ("txt" )
478
+ .setMimeType ("text/plain" )
479
+ .setSize (87533 )
480
+ .setDataItem ("file/FILE_ID/version-2" ))
481
+ .build ();
482
+ }
483
+
377
484
public static ObjectDefinition dummyCustomDef () {
378
485
379
486
var jsonReportDef = "{ reportType: 'magic', mainGraph: { content: 'more_magic' } }" ;
@@ -382,7 +489,7 @@ public static ObjectDefinition dummyCustomDef() {
382
489
.setObjectType (ObjectType .CUSTOM )
383
490
.setCustom (CustomDefinition .newBuilder ()
384
491
.setCustomSchemaType ("REPORT" )
385
- .setCustomSchemaVersion (2 )
492
+ .setCustomSchemaVersion (1 )
386
493
.setCustomData (ByteString .copyFromUtf8 (jsonReportDef )))
387
494
.build ();
388
495
}
@@ -395,10 +502,20 @@ public static ObjectDefinition nextCustomDef(ObjectDefinition origDef) {
395
502
return origDef .toBuilder ()
396
503
.setCustom (origDef .getCustom ()
397
504
.toBuilder ()
505
+ .setCustomSchemaVersion (2 )
398
506
.setCustomData (ByteString .copyFromUtf8 (jsonReportDef )))
399
507
.build ();
400
508
}
401
509
510
+ public static ObjectDefinition nextBadCustomDef (ObjectDefinition origDef ) {
511
+
512
+ return origDef .toBuilder ()
513
+ .setCustom (origDef .getCustom ()
514
+ .toBuilder ()
515
+ .setCustomSchemaType ("DASHBOARD" ))
516
+ .build ();
517
+ }
518
+
402
519
public static Tag dummyTag (ObjectDefinition definition , boolean includeHeader ) {
403
520
404
521
var tag = Tag .newBuilder ()
0 commit comments