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);
}
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 );
}
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);
}
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);
}
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());
}
Aggregations