use of joynr.types.DiscoveryEntry in project joynr by bmwcarit.
the class AccessControllerTest method setup.
@Before
public void setup() {
String discoveryProviderParticipantId = "";
String routingProviderParticipantId = "";
accessController = new AccessControllerImpl(localCapabilitiesDirectory, localDomainAccessController, new CapabilitiesProvisioning() {
@Override
public Collection<DiscoveryEntry> getDiscoveryEntries() {
return new ArrayList<DiscoveryEntry>();
}
}, discoveryProviderParticipantId, routingProviderParticipantId);
when(messageMock.getType()).thenReturn(Message.VALUE_MESSAGE_TYPE_REQUEST);
when(messageMock.getRecipient()).thenReturn(toParticipantId);
when(messageMock.getSender()).thenReturn(fromParticipantId);
when(messageMock.getCreatorUserId()).thenReturn(DUMMY_USERID);
when(messageMock.getId()).thenReturn("someId");
final DiscoveryEntryWithMetaInfo discoveryEntry = new DiscoveryEntryWithMetaInfo(new Version(47, 11), testDomain, testInterface, toParticipantId, new ProviderQos(), System.currentTimeMillis(), System.currentTimeMillis() + ONE_MINUTE_IN_MS, testPublicKeyId, false);
doAnswer(new Answer<Object>() {
@Override
public Object answer(InvocationOnMock invocation) throws Throwable {
CapabilityCallback callback = (CapabilityCallback) invocation.getArguments()[2];
callback.processCapabilityReceived(discoveryEntry);
return null;
}
}).when(localCapabilitiesDirectory).lookup(eq(toParticipantId), any(DiscoveryQos.class), any(CapabilityCallback.class));
}
use of joynr.types.DiscoveryEntry in project joynr by bmwcarit.
the class ExpiredDiscoveryEntryCacheCleanerTest method testExpiredEntriesCleanedUp.
@Test
public void testExpiredEntriesCleanedUp() {
Set<DiscoveryEntry> allEntries = new HashSet<>();
DiscoveryEntry liveEntry = mock(DiscoveryEntry.class);
when(liveEntry.getExpiryDateMs()).thenReturn(System.currentTimeMillis() + 1000L);
allEntries.add(liveEntry);
final String expiredParticipantId = "expiredParticipantId";
DiscoveryEntry expiredEntry = mock(DiscoveryEntry.class);
when(expiredEntry.getExpiryDateMs()).thenReturn(System.currentTimeMillis() - 1000L);
when(expiredEntry.getParticipantId()).thenReturn(expiredParticipantId);
allEntries.add(expiredEntry);
when(cache.getAllDiscoveryEntries()).thenReturn(allEntries);
subject.scheduleCleanUpForCaches(cleanupAction, cache);
verify(scheduledExecutorService).scheduleAtFixedRate(runnableArgumentCaptor.capture(), eq(1L), eq(1L), eq(TimeUnit.MINUTES));
Runnable cleanupTask = runnableArgumentCaptor.getValue();
cleanupTask.run();
verify(cache).getAllDiscoveryEntries();
verify(cleanupAction).cleanup(Sets.newHashSet(expiredEntry));
}
use of joynr.types.DiscoveryEntry in project joynr by bmwcarit.
the class LocalCapabilitiesDirectoryTest method setUp.
@SuppressWarnings("unchecked")
@Before
public void setUp() throws Exception {
channelAddress = new ChannelAddress(TEST_URL, "testChannelId");
ObjectMapper objectMapper = new ObjectMapper();
channelAddressSerialized = objectMapper.writeValueAsString(channelAddress);
Field objectMapperField = CapabilityUtils.class.getDeclaredField("objectMapper");
objectMapperField.setAccessible(true);
objectMapperField.set(CapabilityUtils.class, objectMapper);
Answer<Void> answer = new Answer<Void>() {
@Override
public Void answer(InvocationOnMock invocation) throws Throwable {
Object[] args = invocation.getArguments();
((Callback<Void>) args[0]).onSuccess(null);
return null;
}
};
doAnswer(answer).when(globalCapabilitiesClient).add(any(Callback.class), any(GlobalDiscoveryEntry.class));
String discoveryDirectoriesDomain = "io.joynr";
String capabilitiesDirectoryParticipantId = "capDir_participantId";
String capabiltitiesDirectoryChannelId = "dirchannelId";
String domainAccessControllerParticipantId = "domainAccessControllerParticipantId";
String domainAccessControllerChannelId = "domainAccessControllerChannelId";
DiscoveryEntry globalCapabilitiesDirectoryDiscoveryEntry = CapabilityUtils.newGlobalDiscoveryEntry(new Version(0, 1), discoveryDirectoriesDomain, GlobalCapabilitiesDirectory.INTERFACE_NAME, capabilitiesDirectoryParticipantId, new ProviderQos(), System.currentTimeMillis(), expiryDateMs, domainAccessControllerChannelId, new ChannelAddress(TEST_URL, capabiltitiesDirectoryChannelId));
DiscoveryEntry domainAccessControllerDiscoveryEntry = CapabilityUtils.newGlobalDiscoveryEntry(new Version(0, 1), discoveryDirectoriesDomain, GlobalDomainAccessController.INTERFACE_NAME, domainAccessControllerParticipantId, new ProviderQos(), System.currentTimeMillis(), expiryDateMs, domainAccessControllerChannelId, new ChannelAddress(TEST_URL, domainAccessControllerChannelId));
when(capabilitiesProvisioning.getDiscoveryEntries()).thenReturn(Sets.newHashSet(globalCapabilitiesDirectoryDiscoveryEntry, domainAccessControllerDiscoveryEntry));
// use default freshnessUpdateIntervalMs: 3600000ms (1h)
localCapabilitiesDirectory = new LocalCapabilitiesDirectoryImpl(capabilitiesProvisioning, globalAddressProvider, localDiscoveryEntryStoreMock, globalDiscoveryEntryCacheMock, messageRouter, globalCapabilitiesClient, expiredDiscoveryEntryCacheCleaner, 3600000, capabilitiesFreshnessUpdateExecutor, defaultDiscoveryRetryIntervalMs, shutdownNotifier);
verify(expiredDiscoveryEntryCacheCleaner).scheduleCleanUpForCaches(Mockito.<ExpiredDiscoveryEntryCacheCleaner.CleanupAction>any(), argThat(new DiscoveryEntryStoreVarargMatcher(globalDiscoveryEntryCacheMock, localDiscoveryEntryStoreMock)));
verify(capabilitiesFreshnessUpdateExecutor).scheduleAtFixedRate(runnableCaptor.capture(), anyLong(), anyLong(), eq(TimeUnit.MILLISECONDS));
ProviderQos providerQos = new ProviderQos();
CustomParameter[] parameterList = { new CustomParameter("key1", "value1"), new CustomParameter("key2", "value2") };
providerQos.setCustomParameters(parameterList);
String participantId = "testParticipantId";
String domain = "domain";
discoveryEntry = new DiscoveryEntry(new Version(47, 11), domain, TestInterface.INTERFACE_NAME, participantId, providerQos, System.currentTimeMillis(), expiryDateMs, publicKeyId);
globalDiscoveryEntry = new GlobalDiscoveryEntry(new Version(47, 11), domain, TestInterface.INTERFACE_NAME, participantId, providerQos, System.currentTimeMillis(), expiryDateMs, publicKeyId, channelAddressSerialized);
}
use of joynr.types.DiscoveryEntry in project joynr by bmwcarit.
the class LocalCapabilitiesDirectoryTest method testLookupMultipleDomainsLocalThenGlobal.
@SuppressWarnings("unchecked")
@Test
public void testLookupMultipleDomainsLocalThenGlobal() {
String[] domains = new String[] { "domain1", "domain2", "domain3" };
String interfaceName = "interface1";
DiscoveryQos discoveryQos = new DiscoveryQos();
discoveryQos.setDiscoveryScope(DiscoveryScope.LOCAL_THEN_GLOBAL);
discoveryQos.setCacheMaxAgeMs(ONE_DAY_IN_MS);
CapabilitiesCallback capabilitiesCallback = mock(CapabilitiesCallback.class);
DiscoveryEntry localEntry = new DiscoveryEntry();
localEntry.setDomain("domain1");
when(localDiscoveryEntryStoreMock.lookup(eq(domains), eq(interfaceName))).thenReturn(Lists.newArrayList(localEntry));
GlobalDiscoveryEntry globalEntry = new GlobalDiscoveryEntry();
globalEntry.setDomain("domain2");
Collection<DiscoveryEntry> entries = Lists.newArrayList((DiscoveryEntry) globalEntry);
when(globalDiscoveryEntryCacheMock.lookup(eq(domains), eq(interfaceName), eq(discoveryQos.getCacheMaxAgeMs()))).thenReturn(entries);
final GlobalDiscoveryEntry remoteGlobalEntry = new GlobalDiscoveryEntry(new Version(0, 0), "domain3", interfaceName, "participantIdRemote", new ProviderQos(), System.currentTimeMillis(), System.currentTimeMillis() + 10000L, "publicKeyId", channelAddressSerialized);
doAnswer(new Answer<Void>() {
@Override
public Void answer(InvocationOnMock invocation) throws Throwable {
Callback<List<GlobalDiscoveryEntry>> callback = (Callback<List<GlobalDiscoveryEntry>>) invocation.getArguments()[0];
callback.onSuccess(Lists.newArrayList(remoteGlobalEntry));
return null;
}
}).when(globalCapabilitiesClient).lookup(any(Callback.class), Mockito.<String[]>any(), anyString(), anyLong());
localCapabilitiesDirectory.lookup(domains, interfaceName, discoveryQos, capabilitiesCallback);
verify(globalCapabilitiesClient).lookup(any(Callback.class), argThat(Matchers.arrayContainingInAnyOrder(new String[] { "domain3" })), eq(interfaceName), eq(discoveryQos.getDiscoveryTimeoutMs()));
verify(capabilitiesCallback).processCapabilitiesReceived(capabilitiesCaptor.capture());
Collection<DiscoveryEntry> captured = CapabilityUtils.convertToDiscoveryEntrySet(capabilitiesCaptor.getValue());
assertNotNull(captured);
assertEquals(3, captured.size());
assertTrue(captured.contains(localEntry));
assertTrue(captured.contains(new DiscoveryEntry(globalEntry)));
assertTrue(captured.contains(new DiscoveryEntry(remoteGlobalEntry)));
}
use of joynr.types.DiscoveryEntry in project joynr by bmwcarit.
the class LocalCapabilitiesDirectoryTest method testLookupMultipleDomainsLocalOnly.
@Test
public void testLookupMultipleDomainsLocalOnly() {
String[] domains = new String[] { "domain1", "domain2" };
String interfaceName = "interface1";
DiscoveryQos discoveryQos = new DiscoveryQos();
discoveryQos.setDiscoveryScope(DiscoveryScope.LOCAL_ONLY);
CapabilitiesCallback capabilitiesCallback = mock(CapabilitiesCallback.class);
Collection<DiscoveryEntry> entries = Lists.newArrayList(new DiscoveryEntry(new Version(0, 0), "domain1", interfaceName, "participantId1", new ProviderQos(), System.currentTimeMillis(), expiryDateMs, interfaceName), new DiscoveryEntry(new Version(0, 0), "domain2", interfaceName, "participantId2", new ProviderQos(), System.currentTimeMillis(), expiryDateMs, interfaceName));
when(localDiscoveryEntryStoreMock.lookup(eq(domains), eq(interfaceName))).thenReturn(entries);
localCapabilitiesDirectory.lookup(domains, interfaceName, discoveryQos, capabilitiesCallback);
verify(capabilitiesCallback).processCapabilitiesReceived(capabilitiesCaptor.capture());
Collection<DiscoveryEntry> discoveredEntries = CapabilityUtils.convertToDiscoveryEntryList(capabilitiesCaptor.getValue());
assertNotNull(discoveredEntries);
assertEquals(2, discoveredEntries.size());
}
Aggregations