@Test
  public void testTcpSplunkInputCrud() {
    Service service = connect();
    InputCollection inputCollection = service.getInputs();
    String port = "9998"; // test port

    // CRUD TCP (cooked) input
    if (inputCollection.containsKey(port)) {
      inputCollection.remove(port);
      inputCollection.refresh();
    }
    assertFalse(assertRoot + "#29", inputCollection.containsKey(port));

    inputCollection.create(port, InputKind.TcpSplunk);
    assertTrue(assertRoot + "#30", inputCollection.containsKey(port));
    TcpSplunkInput tcpSplunkInput = (TcpSplunkInput) inputCollection.get(port);

    tcpSplunkInput.setConnectionHost("one.two.three");
    tcpSplunkInput.setHost("myhost");
    if (service.versionCompare("4.3") >= 0) {
      // Behavioral difference between 4.3 and earlier versions
      tcpSplunkInput.setRestrictToHost("four.five.com");
    }
    tcpSplunkInput.setSSL(false);
    tcpSplunkInput.update();

    assertEquals(assertRoot + "#31", "one.two.three", tcpSplunkInput.getConnectionHost());
    assertEquals(assertRoot + "#32", "myhost", tcpSplunkInput.getHost());
    assertFalse(tcpSplunkInput.getSSL());

    tcpSplunkInput.remove();
    inputCollection.refresh();
    assertFalse(assertRoot + "#33", inputCollection.containsKey(port));
  }
  @Test
  public void testWindowsPerfmonInputCrud() {
    Service service = connect();
    InputCollection inputCollection = service.getInputs();
    ServiceInfo info = service.getInfo();

    if (info.getOsName().equals("Windows")) {
      String name = "sdk-input-wp";
      Args args = new Args();

      if (inputCollection.containsKey(name)) {
        inputCollection.remove(name);
        inputCollection.refresh();
      }
      assertFalse(assertRoot + "#57", inputCollection.containsKey(name));

      // CRUD Windows Perfmon Input
      args.put("interval", 600);
      args.put("object", "Server");
      inputCollection.create(name, InputKind.WindowsPerfmon, args);
      assertTrue(assertRoot + "#58", inputCollection.containsKey(name));
      WindowsPerfmonInput windowsPerfmonInput = (WindowsPerfmonInput) inputCollection.get(name);

      windowsPerfmonInput.setIndex("main");
      windowsPerfmonInput.setCounters("% Privileged Time");
      windowsPerfmonInput.setInstances("wininit");
      windowsPerfmonInput.setObject("Process");
      windowsPerfmonInput.setInterval(1200);
      windowsPerfmonInput.update();

      assertEquals(assertRoot + "#59", 1, windowsPerfmonInput.getCounters().length);
      assertTrue(
          assertRoot + "#60", contains(windowsPerfmonInput.getCounters(), "% Privileged Time"));
      assertEquals(windowsPerfmonInput.getIndex(), "main");
      assertTrue(assertRoot + "#61", contains(windowsPerfmonInput.getInstances(), "wininit"));
      assertEquals(assertRoot + "#62", 1200, windowsPerfmonInput.getInterval());
      assertEquals(assertRoot + "#63", "Process", windowsPerfmonInput.getObject());

      // set multi-series values and update.
      windowsPerfmonInput.setCounters(new String[] {"% Privileged Time", "% User Time"});
      windowsPerfmonInput.setInstances(new String[] {"smss", "csrss"});
      windowsPerfmonInput.update();

      assertEquals(assertRoot + "#64", 2, windowsPerfmonInput.getCounters().length);
      assertTrue(
          assertRoot + "#65", contains(windowsPerfmonInput.getCounters(), "% Privileged Time"));
      assertTrue(assertRoot + "#66", contains(windowsPerfmonInput.getCounters(), "% User Time"));

      assertEquals(assertRoot + "#67", 2, windowsPerfmonInput.getInstances().length);
      assertTrue(assertRoot + "#68", contains(windowsPerfmonInput.getInstances(), "smss"));
      assertTrue(assertRoot + "#69", contains(windowsPerfmonInput.getInstances(), "csrss"));

      windowsPerfmonInput.remove();
      inputCollection.refresh();
      assertFalse(assertRoot + "#70", inputCollection.containsKey(name));
    }
  }
Example #3
0
  protected int findNextUnusedPort(int startingPort) {
    InputCollection inputs = service.getInputs();

    int port = startingPort;
    while (inputs.containsKey(String.valueOf(port))) {
      port++;
    }
    return port;
  }
  @Test
  public void testWindowsRegistryInputCrud() {
    Service service = connect();
    InputCollection inputCollection = service.getInputs();
    ServiceInfo info = service.getInfo();

    if (info.getOsName().equals("Windows")) {
      String name = "sdk-input-wr";
      Args args = new Args();

      if (service.versionCompare("4.3") < 0) return;

      if (inputCollection.containsKey(name)) {
        inputCollection.remove(name);
        inputCollection.refresh();
      }
      assertFalse(assertRoot + "#71", inputCollection.containsKey(name));

      // CRUD Windows Registry Input
      args.put("disabled", true);
      args.put("baseline", false);
      args.put("hive", "HKEY_USERS");
      args.put("proc", "*");
      args.put("type", "*");
      inputCollection.create(name, InputKind.WindowsRegistry, args);
      assertTrue(assertRoot + "#72", inputCollection.containsKey(name));
      WindowsRegistryInput windowsRegistryInput = (WindowsRegistryInput) inputCollection.get(name);

      windowsRegistryInput.setIndex("main");
      windowsRegistryInput.setMonitorSubnodes(true);
      windowsRegistryInput.update();

      assertFalse(assertRoot + "#73", windowsRegistryInput.getBaseline());
      assertEquals(assertRoot + "#74", "main", windowsRegistryInput.getIndex());

      // adjust a few of the arguments
      windowsRegistryInput.setType("create,delete");
      windowsRegistryInput.setBaseline(false);
      windowsRegistryInput.update();

      assertEquals(assertRoot + "#75", "*", windowsRegistryInput.getProc());
      assertTrue(assertRoot + "#76", windowsRegistryInput.getType().contains("create"));
      assertTrue(assertRoot + "#77", windowsRegistryInput.getType().contains("delete"));
      assertFalse(assertRoot + "#78", windowsRegistryInput.getBaseline());

      windowsRegistryInput.remove();
      inputCollection.refresh();
      assertFalse(assertRoot + "#79", inputCollection.containsKey(name));
    }
  }
  @Test
  public void testInputs() {
    Service service = connect();

    InputCollection inputs = service.getInputs();

    // Iterate inputs and make sure we can read them.
    for (Input input : inputs.values()) {
      input.getName();
      input.getTitle();
      input.getPath();
      input.getKind();
      touchSpecificInput(input);
    }
  }
  @Test
  public void testTcpInputCrud() {
    Service service = connect();
    InputCollection inputCollection = service.getInputs();
    String port = "9999"; // test port

    // CRUD TCP (raw) input
    if (inputCollection.containsKey(port)) {
      inputCollection.remove(port);
      inputCollection.refresh();
    }
    assertFalse(assertRoot + "#19", inputCollection.containsKey(port));

    inputCollection.create(port, InputKind.Tcp);
    assertTrue(assertRoot + "#20", inputCollection.containsKey(port));
    TcpInput tcpInput = (TcpInput) inputCollection.get(port);

    tcpInput.setConnectionHost("one.two.three");
    tcpInput.setHost("myhost");
    tcpInput.setIndex("main");
    tcpInput.setQueue("indexQueue");
    if (service.versionCompare("4.3") >= 0) {
      // Behavioral difference between 4.3 and earlier versions
      tcpInput.setRawTcpDoneTimeout(120);
      tcpInput.setRestrictToHost("four.five.com");
    }
    tcpInput.setSource("tcp");
    tcpInput.setSourceType("sdk-tests");
    tcpInput.setSSL(false);
    tcpInput.update();

    assertEquals(assertRoot + "#21", "one.two.three", tcpInput.getConnectionHost());
    assertEquals(assertRoot + "#22", "myhost", tcpInput.getHost());
    assertEquals(assertRoot + "#23", "main", tcpInput.getIndex());
    assertEquals(assertRoot + "#24", "indexQueue", tcpInput.getQueue());
    assertEquals(assertRoot + "#25", "tcp", tcpInput.getSource());
    assertEquals(assertRoot + "#26", "sdk-tests", tcpInput.getSourceType());
    assertFalse(assertRoot + "#27", tcpInput.getSSL());

    tcpInput.remove();
    inputCollection.refresh();
    assertFalse(assertRoot + "#28", inputCollection.containsKey(port));
  }
  @Test
  public void testUdpInputCrud() {
    Service service = connect();
    InputCollection inputCollection = service.getInputs();
    String port = "9997"; // test port

    // CRUD UDP input
    if (inputCollection.containsKey(port)) {
      inputCollection.remove(port);
      inputCollection.refresh();
    }
    assertFalse(assertRoot + "#34", inputCollection.containsKey(port));

    inputCollection.create(port, InputKind.Udp);
    assertTrue(assertRoot + "#35", inputCollection.containsKey(port));
    UdpInput udpInput = (UdpInput) inputCollection.get(port);

    udpInput.setConnectionHost("connectionHost.com");
    udpInput.setHost("myhost");
    udpInput.setIndex("main");
    udpInput.setNoAppendingTimeStamp(true);
    udpInput.setNoPriorityStripping(true);
    udpInput.setQueue("indexQueue");
    udpInput.setSource("mysource");
    udpInput.setSourceType("mysourcetype");
    udpInput.update();

    assertEquals(assertRoot + "#36", "connectionHost.com", udpInput.getConnectionHost());
    assertEquals(assertRoot + "#37", "myhost", udpInput.getHost());
    assertEquals(assertRoot + "#38", "main", udpInput.getIndex());
    assertTrue(assertRoot + "#39", udpInput.getNoAppendingTimeStamp());
    assertTrue(assertRoot + "#40", udpInput.getNoPriorityStripping());
    assertEquals(assertRoot + "#41", "indexQueue", udpInput.getQueue());
    assertEquals(assertRoot + "#42", "mysource", udpInput.getSource());
    assertEquals(assertRoot + "#43", "mysourcetype", udpInput.getSourceType());

    udpInput.remove();
    inputCollection.refresh();
    assertFalse(assertRoot + "#44", inputCollection.containsKey(port));
  }
  @Test
  public void testWindowsEventLogInputCrud() {
    Service service = connect();
    InputCollection inputCollection = service.getInputs();
    ServiceInfo info = service.getInfo();

    if (info.getOsName().equals("Windows")) {
      String name = "sdk-input-wel";
      Args args = new Args();

      if (inputCollection.containsKey(name)) {
        inputCollection.remove(name);
        inputCollection.refresh();
      }
      assertFalse(assertRoot + "#52", inputCollection.containsKey(name));

      // CRUD Windows Event Log Input
      args.put("lookup_host", "127.0.0.1");
      inputCollection.create(name, InputKind.WindowsEventLog, args);
      assertTrue(assertRoot + "#53", inputCollection.containsKey(name));
      WindowsEventLogInput windowsEventLogInput = (WindowsEventLogInput) inputCollection.get(name);

      windowsEventLogInput.setIndex("main");
      windowsEventLogInput.setLookupHost("127.0.0.1");
      windowsEventLogInput.setHosts("one.two.three,four.five.six");
      windowsEventLogInput.update();

      assertEquals(assertRoot + "#54", "127.0.0.1", windowsEventLogInput.getLookupHost());
      assertEquals(
          assertRoot + "#55", "one.two.three,four.five.six", windowsEventLogInput.getHosts());
      assertEquals(assertRoot + "#55", "main", windowsEventLogInput.getIndex());

      windowsEventLogInput.remove();
      inputCollection.refresh();
      assertFalse(assertRoot + "#56", inputCollection.containsKey(name));
    }
  }
  @Test
  public void testScriptInputCrud() {
    Service service = connect();
    InputCollection inputCollection = service.getInputs();
    ServiceInfo info = service.getInfo();

    // CRUD Script input
    String filename;
    if (info.getOsName().equals("Windows")) filename = "echo.bat";
    else filename = "echo.sh";

    Args args = new Args();
    args.clear();
    args.put("interval", "60");
    if (inputCollection.get(filename) != null) {
      inputCollection.remove(filename);
    }
    inputCollection.create(filename, InputKind.Script, args);
    assertTrue(assertRoot + "#11", inputCollection.containsKey(filename));
    ScriptInput scriptInput = (ScriptInput) inputCollection.get(filename);

    scriptInput.setHost("three.four.com");
    scriptInput.setIndex("main");
    scriptInput.setInterval("120");
    if (service.versionCompare("4.2.4") >= 0) {
      scriptInput.setPassAuth("admin");
    }
    scriptInput.setRenameSource("renamedSource");
    scriptInput.setSource("source");
    scriptInput.setSourcetype("script");
    scriptInput.update();

    assertEquals(assertRoot + "#12", "three.four.com", scriptInput.getHost());
    assertEquals(assertRoot + "#13", "main", scriptInput.getIndex());
    assertEquals(assertRoot + "#14", "120", scriptInput.getInterval());
    if (service.versionCompare("4.2.4") >= 0) {
      assertEquals(assertRoot + "#15", "admin", scriptInput.getPassAuth());
    }
    assertEquals(assertRoot + "#16", "renamedSource", scriptInput.getSource());
    assertEquals(assertRoot + "#17", "script", scriptInput.getSourceType());

    scriptInput.remove();
    inputCollection.refresh();
    assertFalse(assertRoot + "#18", inputCollection.containsKey(filename));
  }
  @Test
  public void testWmiInputCrud() {
    Service service = connect();
    InputCollection inputCollection = service.getInputs();
    ServiceInfo info = service.getInfo();

    if (info.getOsName().equals("Windows")) {
      String name = "sdk-input-wmi";
      Args args = new Args();

      if (inputCollection.containsKey(name)) {
        inputCollection.remove(name);
        inputCollection.refresh();
      }
      assertFalse(assertRoot + "#80", inputCollection.containsKey(name));

      // CRUD Windows Wmi Input
      args.put("classes", "PerfOS_Processor");
      args.put("interval", 600);
      args.put("lookup_host", "127.0.0.1");
      inputCollection.create(name, InputKind.WindowsWmi, args);
      assertTrue(assertRoot + "#81", inputCollection.containsKey(name));
      WindowsWmiInput windowsWmiInput = (WindowsWmiInput) inputCollection.get(name);

      assertEquals(
          assertRoot + "#82",
          "Win32_PerfFormattedData_PerfOS_Processor",
          windowsWmiInput.getClasses());
      assertEquals(assertRoot + "#83", 600, windowsWmiInput.getInterval());
      assertEquals(assertRoot + "#84", "127.0.0.1", windowsWmiInput.getLookupHost());

      windowsWmiInput.setClasses("PerfDisk_LogicalDisk");
      windowsWmiInput.setFields("Caption");
      windowsWmiInput.setIndex("main");
      windowsWmiInput.setInterval(1200);
      windowsWmiInput.setInstances("_Total");
      windowsWmiInput.setServers("host1.splunk.com,host2.splunk.com");
      windowsWmiInput.update();

      assertEquals(
          assertRoot + "#85",
          "Win32_PerfFormattedData_PerfDisk_LogicalDisk",
          windowsWmiInput.getClasses());
      assertEquals(assertRoot + "#86", 1, windowsWmiInput.getFields().length);
      assertTrue(assertRoot + "#87", contains(windowsWmiInput.getFields(), "Caption"));
      assertEquals(assertRoot + "#88", "main", windowsWmiInput.getIndex());
      assertEquals(assertRoot + "#89", 1200, windowsWmiInput.getInterval());
      assertEquals(assertRoot + "#90", 1, windowsWmiInput.getInstances().length);
      assertTrue(assertRoot + "#91", contains(windowsWmiInput.getInstances(), "_Total"));
      assertEquals(
          assertRoot + "#92", "host1.splunk.com,host2.splunk.com", windowsWmiInput.getServers());

      // set list fields
      windowsWmiInput.setFields(new String[] {"Caption", "Description"});
      windowsWmiInput.update();

      assertEquals(assertRoot + "#93", 2, windowsWmiInput.getFields().length);
      assertTrue(assertRoot + "#94", contains(windowsWmiInput.getFields(), "Caption"));
      assertTrue(assertRoot + "#95", contains(windowsWmiInput.getFields(), "Description"));

      windowsWmiInput.remove();
      inputCollection.refresh();
      assertFalse(assertRoot + "#96", inputCollection.containsKey(name));
    }
  }
  @Test
  public void testMonitorInputCrud() {
    Service service = connect();
    InputCollection inputCollection = service.getInputs();
    ServiceInfo info = service.getInfo();

    // CRUD Monitor input
    String filename;
    if (info.getOsName().equals("Windows")) filename = "C:\\Windows\\WindowsUpdate.log";
    else if (info.getOsName().equals("Linux")) filename = "/var/log/messages";
    else if (info.getOsName().equals("Darwin")) {
      filename = "/var/log/system.log";
    } else {
      throw new Error("OS: " + info.getOsName() + " not supported");
    }
    if (inputCollection.containsKey(filename)) {
      inputCollection.remove(filename);
    }

    inputCollection.create(filename, InputKind.Monitor);
    assertTrue(inputCollection.containsKey(filename));
    MonitorInput monitorInput = (MonitorInput) inputCollection.get(filename);

    monitorInput.setBlacklist("phonyregex*1");
    monitorInput.setCheckIndex(true);
    monitorInput.setCheckPath(true);
    if (service.versionCompare("4.2.1") >= 0) {
      monitorInput.setCrcSalt("ThisIsSalt");
      monitorInput.setIgnoreOlderThan("1d");
      monitorInput.setTimeBeforeClose(120);
    }
    monitorInput.setFollowTail(false);
    monitorInput.setHost("three.four.com");
    monitorInput.setHostRegex("host*regex*");
    monitorInput.setHostSegment("");
    monitorInput.setIndex("main");
    monitorInput.setRecursive(false);
    monitorInput.setRenameSource("renamedSource");
    monitorInput.setSourcetype("monitor");
    monitorInput.setWhitelist("phonyregex*2");
    monitorInput.update();

    monitorInput.disable();
    // some attributes are write only; check what we can.
    assertEquals(assertRoot + "#1", "phonyregex*1", monitorInput.getBlacklist());
    assertFalse(assertRoot + "#2", monitorInput.getFollowTail());
    assertEquals(assertRoot + "#3", "three.four.com", monitorInput.getHost());
    assertEquals(assertRoot + "#4", "host*regex*", monitorInput.getHostRegex());
    if (service.versionCompare("4.2.1") >= 0) {
      assertEquals(assertRoot + "#4", "1d", monitorInput.getIgnoreOlderThan());
      assertEquals(assertRoot + "#4", 120, monitorInput.getTimeBeforeClose());
    }
    assertEquals(assertRoot + "#5", "main", monitorInput.getIndex());
    assertFalse(assertRoot + "#6", monitorInput.getRecursive());
    assertEquals(assertRoot + "#7", "renamedSource", monitorInput.getSource());
    assertEquals(assertRoot + "#8", "monitor", monitorInput.getSourceType());
    assertEquals(assertRoot + "#9", "phonyregex*2", monitorInput.getWhitelist());

    monitorInput.remove();
    inputCollection.refresh();
    inputCollection.refresh();
    assertFalse(assertRoot + "#10", inputCollection.containsKey(filename));
  }