Search in sources :

Example 1 with DiscoveryEntry

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));
}
Also used : DiscoveryEntry(joynr.types.DiscoveryEntry) CapabilityCallback(io.joynr.capabilities.CapabilityCallback) ArrayList(java.util.ArrayList) CapabilitiesProvisioning(io.joynr.capabilities.CapabilitiesProvisioning) DiscoveryQos(io.joynr.arbitration.DiscoveryQos) Version(joynr.types.Version) InvocationOnMock(org.mockito.invocation.InvocationOnMock) DiscoveryEntryWithMetaInfo(joynr.types.DiscoveryEntryWithMetaInfo) ProviderQos(joynr.types.ProviderQos) Before(org.junit.Before)

Example 2 with DiscoveryEntry

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));
}
Also used : DiscoveryEntry(joynr.types.DiscoveryEntry) HashSet(java.util.HashSet) Test(org.junit.Test)

Example 3 with DiscoveryEntry

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);
}
Also used : DiscoveryEntry(joynr.types.DiscoveryEntry) GlobalDiscoveryEntry(joynr.types.GlobalDiscoveryEntry) GlobalDiscoveryEntry(joynr.types.GlobalDiscoveryEntry) ChannelAddress(joynr.system.RoutingTypes.ChannelAddress) Matchers.anyString(org.mockito.Matchers.anyString) Field(java.lang.reflect.Field) Mockito.doAnswer(org.mockito.Mockito.doAnswer) Answer(org.mockito.stubbing.Answer) Callback(io.joynr.proxy.Callback) Version(joynr.types.Version) InvocationOnMock(org.mockito.invocation.InvocationOnMock) DeferredVoid(io.joynr.provider.DeferredVoid) CustomParameter(joynr.types.CustomParameter) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) ProviderQos(joynr.types.ProviderQos) Before(org.junit.Before)

Example 4 with DiscoveryEntry

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)));
}
Also used : DiscoveryEntry(joynr.types.DiscoveryEntry) GlobalDiscoveryEntry(joynr.types.GlobalDiscoveryEntry) GlobalDiscoveryEntry(joynr.types.GlobalDiscoveryEntry) Matchers.anyString(org.mockito.Matchers.anyString) DiscoveryQos(io.joynr.arbitration.DiscoveryQos) Callback(io.joynr.proxy.Callback) Version(joynr.types.Version) InvocationOnMock(org.mockito.invocation.InvocationOnMock) List(java.util.List) ArrayList(java.util.ArrayList) DeferredVoid(io.joynr.provider.DeferredVoid) ProviderQos(joynr.types.ProviderQos) Test(org.junit.Test)

Example 5 with DiscoveryEntry

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());
}
Also used : DiscoveryEntry(joynr.types.DiscoveryEntry) GlobalDiscoveryEntry(joynr.types.GlobalDiscoveryEntry) Version(joynr.types.Version) Matchers.anyString(org.mockito.Matchers.anyString) DiscoveryQos(io.joynr.arbitration.DiscoveryQos) ProviderQos(joynr.types.ProviderQos) Test(org.junit.Test)

Aggregations

DiscoveryEntry (joynr.types.DiscoveryEntry)60 GlobalDiscoveryEntry (joynr.types.GlobalDiscoveryEntry)43 Test (org.junit.Test)30 ProviderQos (joynr.types.ProviderQos)25 Version (joynr.types.Version)22 Callback (io.joynr.proxy.Callback)18 Matchers.anyString (org.mockito.Matchers.anyString)17 DiscoveryEntryWithMetaInfo (joynr.types.DiscoveryEntryWithMetaInfo)16 DiscoveryQos (io.joynr.arbitration.DiscoveryQos)15 ArrayList (java.util.ArrayList)14 HashSet (java.util.HashSet)9 InvocationOnMock (org.mockito.invocation.InvocationOnMock)9 DeferredVoid (io.joynr.provider.DeferredVoid)7 JoynrRuntimeException (io.joynr.exceptions.JoynrRuntimeException)6 MqttAddress (joynr.system.RoutingTypes.MqttAddress)6 Injector (com.google.inject.Injector)5 MessagingQos (io.joynr.messaging.MessagingQos)4 Future (io.joynr.proxy.Future)4 CheckForNull (javax.annotation.CheckForNull)4 ChannelAddress (joynr.system.RoutingTypes.ChannelAddress)4