diff options
author | Kajur, Harish (vk250x) <vk250x@att.com> | 2018-11-01 17:50:54 -0400 |
---|---|---|
committer | Kajur, Harish (vk250x) <vk250x@att.com> | 2018-11-01 17:51:02 -0400 |
commit | 7bfc30305b9341999e74f19f747bb7d3c77f6414 (patch) | |
tree | 8f8ba1c9c1cfcdf2bb926df4f5bd9b7f2a7f7276 | |
parent | c2ccad8c88d6eec83e8abb0eb4bab6f65cb74912 (diff) |
Fix bug on create created ts and modified ts
where on create the values should be
the same but it ends up being different sometimes
Issue-ID: AAI-1832
Change-Id: Ia8cfb75a5812e6b59f8000a820cf3605ab17eb2b
Signed-off-by: Kajur, Harish (vk250x) <vk250x@att.com>
-rw-r--r-- | aai-core/src/main/java/org/onap/aai/serialization/db/DBSerializer.java | 8 | ||||
-rw-r--r-- | aai-core/src/test/java/org/onap/aai/serialization/db/DbSerializerTest.java | 55 |
2 files changed, 52 insertions, 11 deletions
diff --git a/aai-core/src/main/java/org/onap/aai/serialization/db/DBSerializer.java b/aai-core/src/main/java/org/onap/aai/serialization/db/DBSerializer.java index e8c03bdd..7a2c447e 100644 --- a/aai-core/src/main/java/org/onap/aai/serialization/db/DBSerializer.java +++ b/aai-core/src/main/java/org/onap/aai/serialization/db/DBSerializer.java @@ -96,6 +96,7 @@ public class DBSerializer { private final Loader loader; private final String baseURL; private double dbTimeMsecs = 0; + private long currentTimeMillis; private SchemaVersions schemaVersions; /** @@ -117,6 +118,7 @@ public class DBSerializer { this.version = version; this.loader = SpringContextAware.getBean(LoaderFactory.class).createLoaderForVersion(introspectionType, version); this.baseURL = AAIConfig.get(AAIConstants.AAI_SERVER_URL_BASE); + this.currentTimeMillis = System.currentTimeMillis(); initBeans(); } @@ -156,14 +158,14 @@ public class DBSerializer { * @param isNewVertex the is new vertex */ public void touchStandardVertexProperties(Vertex v, boolean isNewVertex) { - - String timeNowInSec = Long.toString(System.currentTimeMillis()); + String timeNowInSec = Long.toString(currentTimeMillis); + if (isNewVertex) { v.property(AAIProperties.SOURCE_OF_TRUTH, this.sourceOfTruth); v.property(AAIProperties.CREATED_TS, timeNowInSec); v.property(AAIProperties.AAI_UUID, UUID.randomUUID().toString()); } - v.property(AAIProperties.RESOURCE_VERSION, timeNowInSec ); + v.property(AAIProperties.RESOURCE_VERSION, timeNowInSec); v.property(AAIProperties.LAST_MOD_TS, timeNowInSec); v.property(AAIProperties.LAST_MOD_SOURCE_OF_TRUTH, this.sourceOfTruth); diff --git a/aai-core/src/test/java/org/onap/aai/serialization/db/DbSerializerTest.java b/aai-core/src/test/java/org/onap/aai/serialization/db/DbSerializerTest.java index af6afac2..a5b968b3 100644 --- a/aai-core/src/test/java/org/onap/aai/serialization/db/DbSerializerTest.java +++ b/aai-core/src/test/java/org/onap/aai/serialization/db/DbSerializerTest.java @@ -340,25 +340,64 @@ public class DbSerializerTest extends AAISetup { } - @Test + @Test public void touchStandardVertexPropertiesTest() throws AAIException, InterruptedException { engine.startTransaction(); + + //if this test runs through too fast the value may not change, causing the test to fail. sleeping ensures a different value + Thread.sleep(2); DBSerializer dbser2 = new DBSerializer(version, engine, introspectorFactoryType, "AAI-TEST-2"); Vertex vert = graph.addVertex("aai-node-type", "generic-vnf"); + // Upon first creation of the Vertex and the DBSerializer + // the source of truth and created-ts should be the same as their modified counterparts + dbser2.touchStandardVertexProperties(vert, true); + String createTS = (String)vert.property(AAIProperties.CREATED_TS).value(); + String modTS = (String)vert.property(AAIProperties.LAST_MOD_TS).value(); + String sot = (String)vert.property(AAIProperties.SOURCE_OF_TRUTH).value(); + String lastModSOT = (String)vert.property(AAIProperties.LAST_MOD_SOURCE_OF_TRUTH).value(); + assertTrue(createTS.equals(modTS)); + assertTrue(sot.equals(lastModSOT)); + + //if this test runs through too fast the value may not change, causing the test to fail. sleeping ensures a different value + Thread.sleep(2); + + // Not new vertex && new DBSerializer (A new serializer since a new one will be created per transaction) + // Here the vertex will be modified by a different source of truth + DBSerializer dbser3 = new DBSerializer(version, engine, introspectorFactoryType, "AAI-TEST-3"); + dbser3.touchStandardVertexProperties(vert, false); + createTS = (String)vert.property(AAIProperties.CREATED_TS).value(); + modTS = (String)vert.property(AAIProperties.LAST_MOD_TS).value(); + sot = (String)vert.property(AAIProperties.SOURCE_OF_TRUTH).value(); + lastModSOT = (String)vert.property(AAIProperties.LAST_MOD_SOURCE_OF_TRUTH).value(); + assertFalse(createTS.equals(modTS)); + assertFalse(sot.equals(lastModSOT)); + + //if this test runs through too fast the value may not change, causing the test to fail. sleeping ensures a different value + Thread.sleep(2); + + // The currentTimeMillis used for the created-ts and modified-ts is created at DBSerializer instantiation + // Every REST transaction should create a new DBSerializer - thus a new currentTimeMillis is used at the time of transaction. + // Using an existing vertex, but treating it as new && using an older DBSerializer dbser.touchStandardVertexProperties(vert, true); String resverStart = (String)vert.property(AAIProperties.RESOURCE_VERSION).value(); - String lastModTimeStart = (String)vert.property(AAIProperties.LAST_MOD_TS).value(); + String lastModTimeStart = (String)vert.property(AAIProperties.LAST_MOD_TS).value(); + createTS = (String)vert.property(AAIProperties.CREATED_TS).value(); + modTS = (String)vert.property(AAIProperties.LAST_MOD_TS).value(); + assertTrue(createTS.equals(modTS)); + assertEquals("AAI-TEST", vert.property(AAIProperties.LAST_MOD_SOURCE_OF_TRUTH).value()); - Thread.sleep(10); //bc the resource version is set based on current time in milliseconds, - //if this test runs through too fast the value may not change - //causing the test to fail. sleeping ensures a different value + //if this test runs through too fast the value may not change, causing the test to fail. sleeping ensures a different value + Thread.sleep(2); dbser2.touchStandardVertexProperties(vert, false); - assertFalse(resverStart.equals(vert.property(AAIProperties.RESOURCE_VERSION).value())); - assertFalse(lastModTimeStart.equals(vert.property(AAIProperties.LAST_MOD_TS).value())); - assertEquals("AAI-TEST-2", vert.property(AAIProperties.LAST_MOD_SOURCE_OF_TRUTH).value()); + String resourceVer = (String)vert.property(AAIProperties.RESOURCE_VERSION).value(); + String lastModTs = (String)vert.property(AAIProperties.LAST_MOD_TS).value(); + String lastModSoT = (String)vert.property(AAIProperties.LAST_MOD_SOURCE_OF_TRUTH).value(); + assertFalse(resverStart.equals(resourceVer)); + assertFalse(lastModTimeStart.equals(lastModTs)); + assertEquals("AAI-TEST-2", lastModSoT); } @Test |