Adding tests for IntentCleaner
Also, two small bug fixes for SimpleIntentStore
and one for IntentCleanup
Change-Id: I19c8246dd669d894ba258e04f4f963a97b9a7626
diff --git a/core/net/src/test/java/org/onosproject/net/intent/impl/IntentManagerTest.java b/core/net/src/test/java/org/onosproject/net/intent/impl/IntentManagerTest.java
index bdb3e8d..2512fee 100644
--- a/core/net/src/test/java/org/onosproject/net/intent/impl/IntentManagerTest.java
+++ b/core/net/src/test/java/org/onosproject/net/intent/impl/IntentManagerTest.java
@@ -592,6 +592,48 @@
}
/**
+ * Test failure to install an intent, and verify retries.
+ */
+ @Test
+ public void testCorruptRetry() {
+ IntentCleanup cleanup = new IntentCleanup();
+ cleanup.service = manager;
+ cleanup.store = manager.store;
+ cleanup.cfgService = new ComponentConfigAdapter();
+ cleanup.period = 1_000_000;
+ cleanup.retryThreshold = 3;
+
+ try {
+ cleanup.activate();
+
+ final TestIntentCompilerMultipleFlows errorCompiler = new TestIntentCompilerMultipleFlows();
+ extensionService.registerCompiler(MockIntent.class, errorCompiler);
+ List<Intent> intents;
+
+ flowRuleService.setFuture(false);
+
+ intents = Lists.newArrayList(service.getIntents());
+ assertThat(intents, hasSize(0));
+
+ final MockIntent intent1 = new MockIntent(MockIntent.nextId());
+
+ listener.setLatch(1, Type.INSTALL_REQ);
+ listener.setLatch(cleanup.retryThreshold, Type.CORRUPT);
+ listener.setLatch(1, Type.INSTALLED);
+
+ service.submit(intent1);
+
+ listener.await(Type.INSTALL_REQ);
+ listener.await(Type.CORRUPT);
+ assertEquals(CORRUPT, manager.getIntentState(intent1.key()));
+ assertThat(listener.getCounts(Type.CORRUPT), is(cleanup.retryThreshold));
+
+ } finally {
+ cleanup.deactivate();
+ }
+ }
+
+ /**
* Tests that an intent that fails installation results in no flows remaining.
*/
@Test