View Javadoc
1   package de.dlr.shepard.migrations.neo4j;
2   
3   import static org.junit.jupiter.api.Assertions.assertEquals;
4   
5   import org.neo4j.cypherdsl.core.Node;
6   import org.neo4j.cypherdsl.core.Relationship;
7   
8   public class TestV11 extends MigrationTest {
9   
10    private static String HAS_PAYLOAD = "has_payload";
11  
12    private final Node tsrMixed = sample.timeseriesReference("mixed");
13    private final Node tsrUnique1 = sample.timeseriesReference("unique");
14    private final Node uniqueTs1 = sample.timeseries("unique-device-1");
15    private final Node uniqueTs2 = sample.timeseries("unique-device-2");
16    private final Node tsrDup11 = sample.timeseriesReference("dup11");
17    private final Node tsrDup12 = sample.timeseriesReference("dup12");
18    private final Node duplicatedTs1 = sample.timeseries("duplicated-device1");
19    private final Node tsrDup21 = sample.timeseriesReference("dup21");
20    private final Node tsrDup22 = sample.timeseriesReference("dup22");
21    private final Node tsrDup23 = sample.timeseriesReference("dup23");
22    private final Node duplicatedTs2 = sample.timeseries("duplicated-device2");
23  
24    private void create_payload(Node tsr, Node ts) {
25      q.merge(payload(tsr, ts));
26    }
27  
28    private static Relationship payload(Node tsr, Node ts) {
29      return tsr.relationshipTo(ts, HAS_PAYLOAD);
30    }
31  
32    @Override
33    public void setupPreMigrationData() {
34      create_payload(tsrUnique1, uniqueTs1);
35      create_payload(tsrUnique1, uniqueTs2);
36  
37      create_payload(tsrDup11, duplicatedTs1);
38      create_payload(tsrDup12, duplicatedTs1);
39  
40      create_payload(tsrDup21, duplicatedTs2);
41      create_payload(tsrDup22, duplicatedTs2);
42      create_payload(tsrDup23, duplicatedTs2);
43  
44      q.create(tsrMixed);
45      q.createRelationshipForExisting(tsrMixed, uniqueTs1, HAS_PAYLOAD);
46      q.createRelationshipForExisting(tsrMixed, duplicatedTs1, HAS_PAYLOAD);
47    }
48  
49    @Override
50    public String getTargetVersion() {
51      return "V11";
52    }
53  
54    public void assertUniqueTimeseriesUntouched() {
55      assertEquals(1, q.match(payload(tsrUnique1, uniqueTs1), uniqueTs1).size());
56      assertEquals(1, q.match(payload(tsrUnique1, uniqueTs2), uniqueTs2).size());
57    }
58  
59    public void assertDuplicatesEliminated() {
60      assertEquals(1, q.match(duplicatedTs1).size());
61      assertEquals(1, q.match(duplicatedTs2).size());
62    }
63  
64    public void assertReferencesMigrated() {
65      assertEquals(1, q.match(payload(tsrDup11, duplicatedTs1), duplicatedTs1).size());
66      assertEquals(1, q.match(payload(tsrDup12, duplicatedTs1), duplicatedTs1).size());
67  
68      assertEquals(1, q.match(payload(tsrDup21, duplicatedTs2), duplicatedTs2).size());
69      assertEquals(1, q.match(payload(tsrDup22, duplicatedTs2), duplicatedTs2).size());
70      assertEquals(1, q.match(payload(tsrDup23, duplicatedTs2), duplicatedTs2).size());
71  
72      assertEquals(1, q.match(payload(tsrMixed, uniqueTs1), uniqueTs1).size());
73      assertEquals(1, q.match(payload(tsrMixed, duplicatedTs1), duplicatedTs1).size());
74    }
75  
76    public void cleanup() {
77      q.deleteAll("Timeseries");
78      q.deleteAll("TimeseriesReference");
79    }
80  }