blob: 15abc2bfce43a2551a207b34236b69140231eb0e [file] [log] [blame]
Thomas Vachuskaa8f4e7d2015-01-08 17:31:55 -08001/*
2 * Copyright 2015 Open Networking Laboratory
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package org.onosproject.net.driver;
17
18import org.junit.Test;
19
20import java.io.IOException;
21import java.io.InputStream;
Thomas Vachuska635c2d72015-05-08 14:32:13 -070022import java.util.Iterator;
Thomas Vachuskaa8f4e7d2015-01-08 17:31:55 -080023
24import static org.junit.Assert.assertEquals;
25import static org.junit.Assert.assertTrue;
Thomas Vachuska80b0a802015-07-17 08:43:30 -070026import static org.onosproject.net.driver.DefaultDriverDataTest.DEVICE_ID;
Thomas Vachuskaa8f4e7d2015-01-08 17:31:55 -080027
28/**
29 * Tests of the XML driver loader implementation.
30 */
31public class XmlDriverLoaderTest {
32
33 @Test
34 public void basics() throws IOException {
35 XmlDriverLoader loader = new XmlDriverLoader(getClass().getClassLoader());
36 InputStream stream = getClass().getResourceAsStream("drivers.1.xml");
Thomas Vachuska635c2d72015-05-08 14:32:13 -070037 DriverProvider provider = loader.loadDrivers(stream, null);
Thomas Vachuskaa8f4e7d2015-01-08 17:31:55 -080038 System.out.println(provider);
Thomas Vachuska635c2d72015-05-08 14:32:13 -070039 assertEquals("incorrect driver count", 2, provider.getDrivers().size());
Thomas Vachuskaa8f4e7d2015-01-08 17:31:55 -080040
Thomas Vachuska635c2d72015-05-08 14:32:13 -070041 Iterator<Driver> iterator = provider.getDrivers().iterator();
42 Driver driver = iterator.next();
43 if (!driver.name().equals("foo.1")) {
44 driver = iterator.next();
45 }
46
Thomas Vachuskaa8f4e7d2015-01-08 17:31:55 -080047 assertEquals("incorrect driver name", "foo.1", driver.name());
48 assertEquals("incorrect driver mfg", "Circus", driver.manufacturer());
49 assertEquals("incorrect driver hw", "1.2a", driver.hwVersion());
50 assertEquals("incorrect driver sw", "2.2", driver.swVersion());
51
Thomas Vachuska635c2d72015-05-08 14:32:13 -070052 assertEquals("incorrect driver behaviours", 1, driver.behaviours().size());
Thomas Vachuskaa8f4e7d2015-01-08 17:31:55 -080053 assertTrue("incorrect driver behaviour", driver.hasBehaviour(TestBehaviour.class));
54
55 assertEquals("incorrect driver properties", 2, driver.properties().size());
56 assertTrue("incorrect driver property", driver.properties().containsKey("p1"));
57 }
58
59 @Test(expected = IOException.class)
Jonathan Hartd9df7bd2015-11-10 17:10:25 -080060 public void badXml() throws IOException {
Thomas Vachuskaa8f4e7d2015-01-08 17:31:55 -080061 XmlDriverLoader loader = new XmlDriverLoader(getClass().getClassLoader());
Thomas Vachuska635c2d72015-05-08 14:32:13 -070062 loader.loadDrivers(getClass().getResourceAsStream("drivers.bad.xml"), null);
Thomas Vachuskaa8f4e7d2015-01-08 17:31:55 -080063 }
64
65 @Test(expected = IllegalArgumentException.class)
66 public void noClass() throws IOException {
67 XmlDriverLoader loader = new XmlDriverLoader(getClass().getClassLoader());
Thomas Vachuska635c2d72015-05-08 14:32:13 -070068 loader.loadDrivers(getClass().getResourceAsStream("drivers.noclass.xml"), null);
Thomas Vachuskaa8f4e7d2015-01-08 17:31:55 -080069 }
70
71 @Test(expected = IllegalArgumentException.class)
72 public void noConstructor() throws IOException {
73 XmlDriverLoader loader = new XmlDriverLoader(getClass().getClassLoader());
74 InputStream stream = getClass().getResourceAsStream("drivers.noconstructor.xml");
Thomas Vachuska635c2d72015-05-08 14:32:13 -070075 DriverProvider provider = loader.loadDrivers(stream, null);
Thomas Vachuskaa8f4e7d2015-01-08 17:31:55 -080076 Driver driver = provider.getDrivers().iterator().next();
Thomas Vachuska80b0a802015-07-17 08:43:30 -070077 driver.createBehaviour(new DefaultDriverData(driver, DEVICE_ID), TestBehaviour.class);
Thomas Vachuskaa8f4e7d2015-01-08 17:31:55 -080078 }
79
Jonathan Hartd9df7bd2015-11-10 17:10:25 -080080}