package com.cloudera.sa.node360.playarea; import com.cloudera.sa.node360.localservers.LocalHBaseCluster; import com.cloudera.sa.node360.model.NodePojo; import com.cloudera.sa.node360.model.RulePojo; import com.cloudera.sa.node360.nodepuller.listener.EventListener; import com.cloudera.sa.node360.nodepuller.listener.InternalQueueListener; import com.cloudera.sa.node360.service.HBaseService; import com.cloudera.sa.node360.service.deamon.QueueToHBaseProcess; import com.cloudera.sa.node360.symulator.NodeDataSymulator; import com.cloudera.sa.node360.web.servlet.*; import org.apache.hadoop.conf.Configuration; import org.mortbay.jetty.Handler; import org.mortbay.jetty.Server; import org.mortbay.jetty.servlet.Context; import org.mortbay.jetty.webapp.WebAppContext; import java.io.IOException; /** * Created by ted.malaska on 6/5/15. */ public class JettyTest { public static void main(String args[]) throws Exception { LocalHBaseCluster hbaseCluster = new LocalHBaseCluster(); Configuration config = hbaseCluster.getConfiguration(); QueueToHBaseProcess queueHBaseProcess = null; try { System.out.println("Step 1: Config"); HBaseService hbaseService = new HBaseService(config); System.out.println("Step 2: Service"); hbaseService.generateTables(); System.out.println("Step 2.5: Tables"); populateInitialNodes(hbaseService); System.out.println("Step 2.75: Rules"); //populateRules(hbaseService); System.out.println("Step 3: Nodes Populated"); EventListener listener = new InternalQueueListener(); System.out.println("Step 4: Listener"); long sleepBetweenIterations = 5000; long maxIterations = 200; int updateNodeListEveryNIterations = 100; int updateEtcFileEveryNRequest = 7; NodeDataSymulator sym = new NodeDataSymulator(listener, hbaseService, sleepBetweenIterations, maxIterations, updateNodeListEveryNIterations, updateEtcFileEveryNRequest); queueHBaseProcess = new QueueToHBaseProcess(hbaseService); queueHBaseProcess.start(); sym.run(10); System.out.println("Step 5: Sym"); System.out.println("Step 6: API Test"); Server server = new Server(8082); WebAppContext webapp = new WebAppContext(); webapp.setContextPath("/fe"); webapp.setResourceBase("./webapp"); webapp.setWelcomeFiles(new String[]{"index.html"}); Context servletContext = new Context(); servletContext.setContextPath("/be"); servletContext.addServlet(GraphTsvServlet.class, "/graph.tsv"); servletContext.addServlet(FileGetterServlet.class, "/file/*"); servletContext.addServlet(NodeAutoCompleteServlet.class, "/auto/*"); servletContext.addServlet(GraphNodeJsonServlet.class, "/nodeGraph/*"); servletContext.addServlet(NodeHomeDashBoardInfoServlet.class, "/nodeDash/*"); server.setHandlers(new Handler[]{webapp, servletContext}); System.out.println("-"); GraphTsvServlet.setHBaseService(hbaseService); FileGetterServlet.setHBaseService(hbaseService); NodeAutoCompleteServlet.setHBaseService(hbaseService); GraphNodeJsonServlet.setHBaseService(hbaseService); NodeHomeDashBoardInfoServlet.setHBaseService(hbaseService); server.start(); server.join(); } finally { queueHBaseProcess.stop(); hbaseCluster.shutDown(); System.out.println("Step 7: Shut Down"); } } public static void populateInitialNodes(HBaseService service) throws IOException { service.addNode(new NodePojo("127.1.1.1", "foo1", "20878", "A")); service.addNode(new NodePojo("127.1.1.2", "foo2", "20878", "A")); service.addNode(new NodePojo("127.1.1.3", "foo3", "20870", "B")); service.addNode(new NodePojo("127.1.1.4", "foo4", "20870", "B")); service.addNode(new NodePojo("127.1.2.5", "foo5", "20855", "C")); service.addNode(new NodePojo("127.1.2.6", "foo6", "20870", "C")); service.addNode(new NodePojo("127.1.2.7", "foo7", "20870", "C")); service.addNode(new NodePojo("127.1.2.8", "foo8", "20870", "C")); } public static void populateRules(HBaseService service) throws IOException { String ruleId = "42"; String sourcePort = null; String destinationPort = null; String destinationIp = "127.1.2.8"; RulePojo rule = new RulePojo(ruleId, sourcePort, destinationPort, destinationIp); service.putRule(rule); } }