4 package org.onap.ccsdk.sli.northbound.dmaapclient;
6 import static org.junit.Assert.*;
8 import java.io.InputStream;
10 import java.sql.SQLException;
11 import java.util.Properties;
13 import javax.sql.rowset.CachedRowSet;
15 import org.junit.After;
16 import org.junit.BeforeClass;
17 import org.junit.Test;
18 import org.onap.ccsdk.sli.core.dblib.DBResourceManager;
19 import org.slf4j.Logger;
20 import org.slf4j.LoggerFactory;
22 import ch.vorburger.mariadb4j.DB;
23 import ch.vorburger.mariadb4j.DBConfigurationBuilder;
29 public class TestSdncDhcpEventConsumer {
31 private static final Logger LOG = LoggerFactory.getLogger(TestSdncDhcpEventConsumer.class);
34 private static final String DHCP_MAP_TABLE = "CREATE TABLE `DHCP_MAP` (\n" +
35 " mac_addr varchar(80) NOT NULL,\n" +
36 " ip_addr varchar(80),\n" +
37 " PRIMARY KEY(`mac_addr`)\n" +
42 private static final String VALID_DHCP_EVENT = "{\"msg_name\":\"DHCPACK\"," +
43 "\"macaddr\":\"fa:16:3e:8f:ea:68\"," +
44 "\"yiaddr\":\"10.3.0.2\"}";
45 private static final String SECOND_DHCP_EVENT = "{\"msg_name\":\"DHCPACK\"," +
46 "\"macaddr\":\"fa:16:3e:8f:ea:68\"," +
47 "\"yiaddr\":\"10.3.0.3\"}";
48 private static final String MISSING_MSG_NAME_DHCP_EVENT = "{\"macaddr\":\"fa:16:3e:8f:ea:68\"," +
49 "\"yiaddr\":\"10.3.0.2\"}";
50 private static final String MISSING_MAC_ADDR_DHCP_EVENT = "{\"msg_name\":\"DHCPACK\"," +
51 "\"yiaddr\":\"10.3.0.2\"}";
52 private static final String MISSING_IP_ADDR_DHCP_EVENT = "{\"msg_name\":\"DHCPACK\"," +
53 "\"macaddr\":\"fa:16:3e:8f:ea:68\"}";
55 private static final String GET_DHCP_MAPPING = "SELECT * FROM DHCP_MAP WHERE mac_addr = 'fa:16:3e:8f:ea:68'";
58 private static DBResourceManager dblibSvc;
61 private static SdncDhcpEventConsumer consumer;
64 * @throws java.lang.Exception
67 public static void setUpBeforeClass() throws Exception {
69 LOG.debug("Setting up DHCP event testing");
71 InputStream propStr = TestSdncDhcpEventConsumer.class.getResourceAsStream("/dblib.properties");
73 Properties props = new Properties();
78 // Start MariaDB4j database
80 LOG.debug("Starting MariaDB instance");
81 DBConfigurationBuilder config = DBConfigurationBuilder.newBuilder();
82 config.setPort(0); // 0 => autom. detect free port
83 db = DB.newEmbeddedDB(config.build());
87 // Override jdbc URL and database name
88 props.setProperty("org.onap.ccsdk.sli.jdbc.database", "test");
89 props.setProperty("org.onap.ccsdk.sli.jdbc.url", config.getURL("test"));
92 // Create dblib connection
94 LOG.debug("Getting DBResourceManager instance");
95 dblibSvc = new DBResourceManager(props);
97 // Create DHCP_MAP table
98 dblibSvc.writeData(DHCP_MAP_TABLE, null, null);
100 consumer = new SdncDhcpEventConsumer();
101 consumer.setJdbcDataSource(dblibSvc);
102 LOG.debug("Setup complete");
108 public void testValid() throws InvalidMessageException, SQLException {
109 consumer.processMsg(VALID_DHCP_EVENT);
110 consumer.processMsg(SECOND_DHCP_EVENT);
112 CachedRowSet results = dblibSvc.getData(GET_DHCP_MAPPING, null, null);
114 if (!results.next()) {
115 fail("Test query ["+GET_DHCP_MAPPING+"] returned no data");
117 String ipAddr = results.getString("ip_addr");
118 if (!"10.3.0.3".equals(ipAddr)) {
119 fail("Expecting ipAddr to be 10.3.0.3, but was "+ipAddr);
125 @Test (expected = InvalidMessageException.class)
126 public void testMissingMsgName() throws InvalidMessageException {
127 consumer.processMsg(MISSING_MSG_NAME_DHCP_EVENT);
130 @Test (expected = InvalidMessageException.class)
131 public void testMissingMacAddress() throws InvalidMessageException {
132 consumer.processMsg(MISSING_MAC_ADDR_DHCP_EVENT);
135 @Test (expected = InvalidMessageException.class)
136 public void testMissingIpAddress() throws InvalidMessageException {
137 consumer.processMsg(MISSING_IP_ADDR_DHCP_EVENT);