04f098ade6c92ce7f618516016e77701752bc86f
[ccsdk/sli.git] /
1 /**
2  *
3  */
4 package org.onap.ccsdk.sli.northbound.dmaapclient;
5
6 import static org.junit.Assert.*;
7
8 import java.io.InputStream;
9 import java.net.URL;
10 import java.sql.SQLException;
11 import java.util.Properties;
12
13 import javax.sql.rowset.CachedRowSet;
14
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;
21
22 import ch.vorburger.mariadb4j.DB;
23 import ch.vorburger.mariadb4j.DBConfigurationBuilder;
24
25 /**
26  * @author dt5972
27  *
28  */
29 public class TestSdncDhcpEventConsumer {
30
31         private static final Logger LOG = LoggerFactory.getLogger(TestSdncDhcpEventConsumer.class);
32
33
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" +
38                         ")";
39
40
41
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\"}";
54
55         private static final String GET_DHCP_MAPPING = "SELECT * FROM DHCP_MAP WHERE mac_addr = 'fa:16:3e:8f:ea:68'";
56
57
58         private static DBResourceManager dblibSvc;
59         private static DB db;
60
61         private static SdncDhcpEventConsumer consumer;
62
63         /**
64          * @throws java.lang.Exception
65          */
66         @BeforeClass
67         public static void setUpBeforeClass() throws Exception {
68
69                 LOG.debug("Setting up DHCP event testing");
70
71                 InputStream propStr = TestSdncDhcpEventConsumer.class.getResourceAsStream("/dblib.properties");
72
73                 Properties props = new Properties();
74
75                 props.load(propStr);
76
77
78                 // Start MariaDB4j database
79
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());
84                 db.start();
85
86
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"));
90
91
92                 // Create dblib connection
93
94                 LOG.debug("Getting DBResourceManager instance");
95                 dblibSvc = new DBResourceManager(props);
96
97                 // Create DHCP_MAP table
98                 dblibSvc.writeData(DHCP_MAP_TABLE, null, null);
99
100                 consumer = new SdncDhcpEventConsumer();
101                 consumer.setJdbcDataSource(dblibSvc);
102                 LOG.debug("Setup complete");
103
104         }
105
106
107         @Test
108         public void testValid() throws InvalidMessageException, SQLException {
109                 consumer.processMsg(VALID_DHCP_EVENT);
110                 consumer.processMsg(SECOND_DHCP_EVENT);
111
112                 CachedRowSet results = dblibSvc.getData(GET_DHCP_MAPPING, null, null);
113
114                 if (!results.next()) {
115                         fail("Test query ["+GET_DHCP_MAPPING+"] returned no data");
116                 } else {
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);
120                         }
121                 }
122
123         }
124
125         @Test (expected = InvalidMessageException.class)
126         public void testMissingMsgName() throws InvalidMessageException {
127                 consumer.processMsg(MISSING_MSG_NAME_DHCP_EVENT);
128         }
129
130         @Test (expected = InvalidMessageException.class)
131         public void testMissingMacAddress() throws InvalidMessageException {
132                 consumer.processMsg(MISSING_MAC_ADDR_DHCP_EVENT);
133         }
134
135         @Test (expected = InvalidMessageException.class)
136         public void testMissingIpAddress() throws InvalidMessageException {
137                 consumer.processMsg(MISSING_IP_ADDR_DHCP_EVENT);
138         }
139 }