/** * Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.financial.temptarget; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertNull; import static org.testng.Assert.assertTrue; import java.io.File; import java.util.ArrayList; import org.testng.annotations.Test; import com.google.common.io.Files; import com.opengamma.id.UniqueId; import com.opengamma.util.test.TestGroup; /** * Test. */ @Test(groups = TestGroup.UNIT) public class BerkeleyDBTempTargetRepositoryTest { private BerkeleyDBTempTargetRepository createTempTargetRepository() { final File tmp = Files.createTempDir(); final BerkeleyDBTempTargetRepository targets = new BerkeleyDBTempTargetRepository(tmp); targets.start(); assertTrue(targets.isRunning()); return targets; } public void testNoGenerations() { final BerkeleyDBTempTargetRepository targets = createTempTargetRepository(); try { assertNull(targets.getOldGeneration(0)); assertNull(targets.getNewGeneration(0)); assertFalse(targets.copyOldToNewGeneration(0, new ArrayList<Long>())); targets.nextGeneration(); } finally { targets.stop(); } } public void testTargetMatches() { final BerkeleyDBTempTargetRepository targets = createTempTargetRepository(); try { assertEquals(targets.locateOrStoreImpl(new MockTempTarget("Foo")), UniqueId.of("Tmp", "0")); assertEquals(targets.locateOrStoreImpl(new MockTempTarget("Bar")), UniqueId.of("Tmp", "1")); assertEquals(targets.locateOrStoreImpl(new MockTempTarget("Foo")), UniqueId.of("Tmp", "0")); assertEquals(targets.getNewGeneration(0), new MockTempTarget("Foo")); assertEquals(targets.getNewGeneration(1), new MockTempTarget("Bar")); assertTrue(targets.copyOldToNewGeneration(0, new ArrayList<Long>())); targets.nextGeneration(); assertEquals(targets.getOldGeneration(0), new MockTempTarget("Foo")); assertEquals(targets.getOldGeneration(1), new MockTempTarget("Bar")); assertNull(targets.getNewGeneration(0)); assertNull(targets.getNewGeneration(1)); assertEquals(targets.locateOrStoreImpl(new MockTempTarget("Cow")), UniqueId.of("Tmp", "2")); assertEquals(targets.getNewGeneration(2), new MockTempTarget("Cow")); } finally { targets.stop(); } } public void testRotation() { final BerkeleyDBTempTargetRepository targets = createTempTargetRepository(); try { assertEquals(targets.locateOrStoreImpl(new MockTempTarget("Foo")), UniqueId.of("Tmp", "0")); final long t = System.nanoTime(); assertEquals(targets.locateOrStoreImpl(new MockTempTarget("Bar")), UniqueId.of("Tmp", "1")); assertTrue(targets.copyOldToNewGeneration(0, new ArrayList<Long>())); targets.nextGeneration(); assertEquals(targets.locateOrStoreImpl(new MockTempTarget("Cow")), UniqueId.of("Tmp", "2")); assertTrue(targets.copyOldToNewGeneration(t, new ArrayList<Long>())); targets.nextGeneration(); assertNull(targets.getOldGeneration(0)); assertEquals(targets.getOldGeneration(1), new MockTempTarget("Bar")); assertEquals(targets.getOldGeneration(2), new MockTempTarget("Cow")); } finally { targets.stop(); } } }