@Test public void testHasInterfaceMatching() throws Exception { assertTrue(EntityPredicates.hasInterfaceMatching(".*").apply(entity)); assertTrue(EntityPredicates.hasInterfaceMatching(".*TestEntity").apply(entity)); assertFalse(EntityPredicates.hasInterfaceMatching(".*TestEntity").apply(group)); assertTrue(EntityPredicates.hasInterfaceMatching(Changeable.class.getName()).apply(group)); assertTrue(EntityPredicates.hasInterfaceMatching(".*C.*able").apply(group)); }
@Override public List<ApplicationSummary> list(String typeRegex) { if (Strings.isBlank(typeRegex)) { typeRegex = ".*"; } return FluentIterable .from(mgmt().getApplications()) .filter(EntitlementPredicates.isEntitled(mgmt().getEntitlementManager(), Entitlements.SEE_ENTITY)) .filter(EntityPredicates.hasInterfaceMatching(typeRegex)) .transform(ApplicationTransformer.fromApplication(ui.getBaseUriBuilder())) .toList(); }
@Test public void testGroupAddsNewMatchingMember() throws Exception { group = app.addChild(EntitySpec.create(SequenceGroup.class) .configure(SequenceGroup.ENTITY_FILTER, EntityPredicates.hasInterfaceMatching(".*TestEntity"))); createTestEntities(); app.start(ImmutableList.of(loc1)); assertAttributeEqualsEventually(group, SequenceGroup.RUNNING, true); assertEqualsIgnoringOrder(group.getMembers(), ImmutableSet.of(e1, e2, e3)); assertAttributeEquals(e1, SequenceGroup.SEQUENCE_VALUE, 1); assertAttributeEquals(e2, SequenceGroup.SEQUENCE_VALUE, 2); assertAttributeEquals(e3, SequenceGroup.SEQUENCE_VALUE, 3); assertAttributeEquals(group, SequenceGroup.SEQUENCE_CURRENT, e3); AtomicInteger state = group.sensors().get(SequenceGroup.SEQUENCE_STATE); assertEquals(state.get(), 4); final Entity e = app.addChild(EntitySpec.create(TestEntity.class)); succeedsEventually(new Runnable() { public void run() { assertEqualsIgnoringOrder(group.getMembers(), ImmutableSet.of(e1, e2, e3, e)); assertAttributeEquals(e, SequenceGroup.SEQUENCE_VALUE, 4); assertAttributeEquals(group, SequenceGroup.SEQUENCE_CURRENT, e); AtomicInteger state = group.sensors().get(SequenceGroup.SEQUENCE_STATE); assertEquals(state.get(), 5); }}); } }
@Test public void testAlternateGroupConfiguration() throws Exception { AttributeSensor<Integer> value = Sensors.newIntegerSensor("test.value"); AttributeSensor<String> string = Sensors.newStringSensor("test.string"); group = app.addChild(EntitySpec.create(SequenceGroup.class) .configure(SequenceGroup.SEQUENCE_START, 12345) .configure(SequenceGroup.SEQUENCE_INCREMENT, 678) .configure(SequenceGroup.SEQUENCE_VALUE_SENSOR, value) .configure(SequenceGroup.SEQUENCE_STRING_SENSOR, string) .configure(SequenceGroup.SEQUENCE_FORMAT, "0x%04X") .configure(SequenceGroup.ENTITY_FILTER, EntityPredicates.hasInterfaceMatching(".*TestEntity"))); createTestEntities(); app.start(ImmutableList.of(loc1)); assertAttributeEqualsEventually(group, SequenceGroup.RUNNING, true); assertEqualsIgnoringOrder(group.getMembers(), ImmutableSet.of(e1, e2, e3)); assertAttributeEquals(e1, value, 12345); assertAttributeEquals(e1, string, "0x3039"); assertAttributeEquals(e2, value, 13023); assertAttributeEquals(e2, string, "0x32DF"); assertAttributeEquals(e3, value, 13701); assertAttributeEquals(e3, string, "0x3585"); }