Search in sources :

Example 1 with DriverSelector

use of org.osgi.service.device.DriverSelector in project felix by apache.

the class DriverMatcherTest method selectBestDriver.

@Test
public void selectBestDriver() throws Exception {
    DriverSelector selector = Mockito.mock(DriverSelector.class);
    ServiceReference deviceRef = Mockito.mock(ServiceReference.class);
    add("org.apache.felix.driver-1.0", 1);
    add("org.apache.felix.driver-1.1", 1);
    add("org.apache.felix.driver-1.2", 1);
    add("org.apache.felix.driver-1.3", 1);
    add("org.apache.felix.driver-1.4", 1);
    add("org.apache.felix.driver-1.5", 1);
    // this is the actual driverselector implementation
    Mockito.when(selector.select(Mockito.isA(ServiceReference.class), Mockito.isA(Match[].class))).thenAnswer(new Answer<Integer>() {

        public Integer answer(InvocationOnMock invocation) throws Throwable {
            Match[] matches = (Match[]) invocation.getArguments()[1];
            int index = 0;
            for (Match m : matches) {
                if (tstDriverId(m).endsWith("1.3")) {
                    return index;
                }
                index++;
            }
            Assert.fail("expected unreachable");
            return null;
        }
    });
    Match match = m_matcherImpl.selectBestMatch(deviceRef, selector);
    Assert.assertNotNull("no match returned", match);
    String driverId = tstDriverId(match);
    Assert.assertEquals("org.apache.felix.driver-1.3", driverId);
}
Also used : InvocationOnMock(org.mockito.invocation.InvocationOnMock) DriverSelector(org.osgi.service.device.DriverSelector) ServiceReference(org.osgi.framework.ServiceReference) Match(org.osgi.service.device.Match) Test(org.junit.Test)

Example 2 with DriverSelector

use of org.osgi.service.device.DriverSelector in project felix by apache.

the class DeviceManagerTest method EqualMatchWithDriverSelector.

/**
 * Two drivers equally match the device. There is a driver selector
 * that comes to the rescue that selects driver2.
 *
 * @throws Exception
 */
@Test
public void EqualMatchWithDriverSelector() throws Exception {
    final String driverId1 = "org.apache.felix.driver-1.0";
    final String driverId2 = "org.apache.felix.driver-1.1";
    DriverLocator locator = Mockito.mock(DriverLocator.class);
    Map<String, Driver> drivers = tstExpectDriverLocatorFor(locator, new String[] { driverId1, driverId2 }, new int[] { 20, 20 });
    Device device = tstCreateDevice(new String[] { "org.apache.felix" });
    DriverSelector selector = Mockito.mock(DriverSelector.class);
    SelectorMatcher matcher = new SelectorMatcher(driverId2);
    Mockito.when(selector.select(Mockito.eq(m_osgi.getReference(device)), Mockito.isA(Match[].class))).thenAnswer(matcher);
    final CountDownLatch attachLatch = tstExpectAttach(drivers.get(driverId2), device);
    Utils.inject(m_manager, DriverSelector.class, selector);
    m_manager.locatorAdded(locator);
    m_manager.deviceAdded(m_osgi.getReference(device), device);
    if (!attachLatch.await(5, TimeUnit.SECONDS)) {
        Assert.fail("expected an attach");
    }
// driver2 is attached, so driver1 bundle should uninstall.
// Driver driver = drivers.get( driverId1 );
// tstVerifyBundleUninstall( driver );
}
Also used : DriverLocator(org.osgi.service.device.DriverLocator) Device(org.osgi.service.device.Device) Driver(org.osgi.service.device.Driver) DriverSelector(org.osgi.service.device.DriverSelector) CountDownLatch(java.util.concurrent.CountDownLatch) Test(org.junit.Test)

Example 3 with DriverSelector

use of org.osgi.service.device.DriverSelector in project felix by apache.

the class DriverMatcherTest method GetSelectBestMatchThrowsException.

@Test
public void GetSelectBestMatchThrowsException() throws Exception {
    ServiceReference deviceRef = Mockito.mock(ServiceReference.class);
    DriverSelector selector = Mockito.mock(DriverSelector.class);
    Mockito.when(selector.select(Mockito.eq(deviceRef), Mockito.isA(Match[].class))).thenThrow(new IllegalArgumentException("test"));
    Match match = m_matcherImpl.selectBestMatch(deviceRef, selector);
    Assert.assertNull(match);
}
Also used : DriverSelector(org.osgi.service.device.DriverSelector) ServiceReference(org.osgi.framework.ServiceReference) Match(org.osgi.service.device.Match) Test(org.junit.Test)

Example 4 with DriverSelector

use of org.osgi.service.device.DriverSelector in project felix by apache.

the class DriverMatcherTest method selectFails.

@Test
public void selectFails() throws Exception {
    DriverSelector selector = Mockito.mock(DriverSelector.class);
    ServiceReference deviceRef = Mockito.mock(ServiceReference.class);
    Mockito.when(selector.select(Mockito.eq(deviceRef), Mockito.isA(Match[].class))).thenThrow(new RuntimeException("test exception"));
    add("org.apache.felix.driver-1.5", 1);
    Match match = m_matcherImpl.selectBestMatch(deviceRef, selector);
    Assert.assertNull(match);
}
Also used : DriverSelector(org.osgi.service.device.DriverSelector) ServiceReference(org.osgi.framework.ServiceReference) Match(org.osgi.service.device.Match) Test(org.junit.Test)

Example 5 with DriverSelector

use of org.osgi.service.device.DriverSelector in project felix by apache.

the class DriverMatcherTest method VerifyMatchToString.

@Test
public void VerifyMatchToString() throws Exception {
    DriverSelector selector = Mockito.mock(DriverSelector.class);
    ServiceReference deviceRef = Mockito.mock(ServiceReference.class);
    Mockito.when(selector.select(Mockito.eq(deviceRef), Mockito.isA(Match[].class))).thenReturn(0);
    add("org.apache.felix.driver-1.5", 2);
    Match match = m_matcherImpl.selectBestMatch(deviceRef, selector);
    Assert.assertNotNull(match);
    Assert.assertNotNull(match.toString());
}
Also used : DriverSelector(org.osgi.service.device.DriverSelector) ServiceReference(org.osgi.framework.ServiceReference) Match(org.osgi.service.device.Match) Test(org.junit.Test)

Aggregations

Test (org.junit.Test)5 DriverSelector (org.osgi.service.device.DriverSelector)5 ServiceReference (org.osgi.framework.ServiceReference)4 Match (org.osgi.service.device.Match)4 CountDownLatch (java.util.concurrent.CountDownLatch)1 InvocationOnMock (org.mockito.invocation.InvocationOnMock)1 Device (org.osgi.service.device.Device)1 Driver (org.osgi.service.device.Driver)1 DriverLocator (org.osgi.service.device.DriverLocator)1