public void WindowsRegistryInputCRUD()
        {
            Service         service         = Connect();
            InputCollection inputCollection = service.GetInputs();
            ServiceInfo     info            = service.GetInfo();

            if (info.OsName.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();
                }
                Assert.IsFalse(inputCollection.ContainsKey(name), assertRoot + "#71");

                // CRUD Windows Registry Input
                args.Add("disabled", true);
                args.Add("baseline", false);
                args.Add("hive", "HKEY_USERS");
                args.Add("proc", "*");
                args.Add("type", "*");
                inputCollection.Create(name, InputKind.WindowsRegistry, args);
                Assert.IsTrue(inputCollection.ContainsKey(name), assertRoot + "#72");
                WindowsRegistryInput windowsRegistryInput =
                    (WindowsRegistryInput)inputCollection.Get(name);

                windowsRegistryInput.Index           = "main";
                windowsRegistryInput.MonitorSubnodes = true;
                windowsRegistryInput.Update();

                Assert.IsFalse(windowsRegistryInput.Baseline, assertRoot + "#73");
                Assert.AreEqual("main", windowsRegistryInput.Index, assertRoot + "#74");

                // adjust a few of the arguments
                windowsRegistryInput.Type = new string[] { "create", "delete" };
                // touch the new Type (testing get after set)
                string[] foo = windowsRegistryInput.Type;
                windowsRegistryInput.Baseline = false;
                windowsRegistryInput.Update();

                Assert.AreEqual("*", windowsRegistryInput.Proc, assertRoot + "#75");
                Assert.IsTrue(windowsRegistryInput.Type.Contains("create"), assertRoot + "#76");
                Assert.IsTrue(windowsRegistryInput.Type.Contains("delete"), assertRoot + "#77");
                Assert.IsFalse(windowsRegistryInput.Baseline, assertRoot + "#78");

                windowsRegistryInput.Remove();
                inputCollection.Refresh();
                Assert.IsFalse(inputCollection.ContainsKey(name), assertRoot + "#79");
            }
        }
        public void WindowsPerfmonInputCRUD()
        {
            Service         service         = Connect();
            InputCollection inputCollection = service.GetInputs();
            ServiceInfo     info            = service.GetInfo();

            if (info.OsName.Equals("Windows"))
            {
                string name = "sdk-input-wp";
                Args   args = new Args();

                if (inputCollection.ContainsKey(name))
                {
                    inputCollection.Remove(name);
                    inputCollection.Refresh();
                }
                Assert.IsFalse(inputCollection.ContainsKey(name), assertRoot + "#57");

                // CRUD Windows Perfmon Input
                args.Add("interval", 600);
                args.Add("object", "Server");
                inputCollection.Create(name, InputKind.WindowsPerfmon, args);
                Assert.IsTrue(inputCollection.ContainsKey(name), assertRoot + "#58");
                WindowsPerfmonInput windowsPerfmonInput = (WindowsPerfmonInput)inputCollection.Get(name);

                windowsPerfmonInput.Index     = "main";
                windowsPerfmonInput.Counters  = new string[] { "% Privileged Time" };
                windowsPerfmonInput.Instances = new string[] { "wininit" };
                windowsPerfmonInput.Object    = "Process";
                windowsPerfmonInput.Interval  = 1200;
                windowsPerfmonInput.Update();

                Assert.AreEqual(1, windowsPerfmonInput.Counters.Length, assertRoot + "#59");
                Assert.IsTrue(this.Contains(windowsPerfmonInput.Counters, "% Privileged Time"), assertRoot + "#60");
                Assert.AreEqual(windowsPerfmonInput.Index, "main", assertRoot + "#60.1");
                Assert.IsTrue(this.Contains(windowsPerfmonInput.Instances, "wininit"), assertRoot + "#61");
                Assert.AreEqual(1200, windowsPerfmonInput.Interval, assertRoot + "#62");
                Assert.AreEqual("Process", windowsPerfmonInput.Object, assertRoot + "#63");

                // set multi-series values and update.
                windowsPerfmonInput.Counters  = new string[] { "% Privileged Time", "% User Time" };
                windowsPerfmonInput.Instances = new string[] { "smss", "csrss" };
                windowsPerfmonInput.Update();

                Assert.AreEqual(2, windowsPerfmonInput.Counters.Length, assertRoot + "#64");
                Assert.IsTrue(this.Contains(windowsPerfmonInput.Counters, "% Privileged Time"), assertRoot + "#65");
                Assert.IsTrue(this.Contains(windowsPerfmonInput.Counters, "% User Time"), assertRoot + "#66");

                Assert.AreEqual(2, windowsPerfmonInput.Instances.Length, assertRoot + "#67");
                Assert.IsTrue(this.Contains(windowsPerfmonInput.Instances, "smss"), assertRoot + "#68");
                Assert.IsTrue(this.Contains(windowsPerfmonInput.Instances, "csrss"), assertRoot + "#69");

                windowsPerfmonInput.Remove();
                inputCollection.Refresh();
                Assert.IsFalse(inputCollection.ContainsKey(name), assertRoot + "#70");
            }
        }
 private void DeleteInput(object sender, EventArgs e)
 {
     inputs.Remove((string)cmboInputs.SelectedItem);
     cmboInputs.Items.Clear();
     foreach (var i in inputs)
     {
         cmboInputs.Items.Add(i.Key);
     }
     ResetInputCombo();
     InputChanged(null, EventArgs.Empty);
 }
        public void TcpInputCRUD()
        {
            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();
            }

            Assert.IsFalse(inputCollection.ContainsKey(port), assertRoot + "#19");

            inputCollection.Create(port, InputKind.Tcp);
            Assert.IsTrue(inputCollection.ContainsKey(port), assertRoot + "#20");
            TcpInput tcpInput = (TcpInput)inputCollection.Get(port);

            tcpInput.ConnectionHost = "dns";
            tcpInput.Host           = "myhost";
            tcpInput.Index          = "main";
            tcpInput.Queue          = "indexQueue";
            if (service.VersionCompare("4.3") >= 0)
            {
                // Behavioral difference between 4.3 and earlier versions
                tcpInput.RawTcpDoneTimeout = 120;
            }
            tcpInput.Source     = "tcp";
            tcpInput.SourceType = "sdk-tests";
            tcpInput.SSL        = false;
            tcpInput.Update();

            Assert.AreEqual("dns", tcpInput.ConnectionHost, assertRoot + "#21");
            Assert.AreEqual("myhost", tcpInput.Host, assertRoot + "#22");
            Assert.AreEqual("main", tcpInput.Index, assertRoot + "#23");
            Assert.AreEqual("indexQueue", tcpInput.Queue, assertRoot + "#24");
            Assert.AreEqual("tcp", tcpInput.Source, assertRoot + "#25");
            Assert.AreEqual("sdk-tests", tcpInput.SourceType, assertRoot + "#26");
            Assert.IsFalse(tcpInput.SSL, assertRoot + "#27");

            tcpInput.Remove();
            inputCollection.Refresh();
            Assert.IsFalse(inputCollection.ContainsKey(port), assertRoot + "#28");
        }
        public void UdpInputCRUD()
        {
            Service         service         = Connect();
            InputCollection inputCollection = service.GetInputs();
            string          port            = "9997"; // test port

            // CRUD UDP input
            if (inputCollection.ContainsKey(port))
            {
                inputCollection.Remove(port);
                inputCollection.Refresh();
            }

            Assert.IsFalse(inputCollection.ContainsKey(port), assertRoot + "#34");

            inputCollection.Create(port, InputKind.Udp);
            Assert.IsTrue(inputCollection.ContainsKey(port), assertRoot + "#35");
            UdpInput udpInput = (UdpInput)inputCollection.Get(port);

            udpInput.ConnectionHost       = "ip";
            udpInput.Host                 = "myhost";
            udpInput.Index                = "main";
            udpInput.NoAppendingTimeStamp = true;
            udpInput.NoPriorityStripping  = true;
            udpInput.Queue                = "indexQueue";
            udpInput.Source               = "mysource";
            udpInput.SourceType           = "mysourcetype";
            udpInput.Update();

            Assert.AreEqual("ip", udpInput.ConnectionHost, assertRoot + "#36");
            Assert.AreEqual("myhost", udpInput.Host, assertRoot + "#37");
            Assert.AreEqual("main", udpInput.Index, assertRoot + "#38");
            Assert.IsTrue(udpInput.NoAppendingTimeStamp, assertRoot + "#39");
            Assert.IsTrue(udpInput.NoPriorityStripping, assertRoot + "#40");
            Assert.AreEqual("indexQueue", udpInput.Queue, assertRoot + "#41");
            Assert.AreEqual("mysource", udpInput.Source, assertRoot + "#42");
            Assert.AreEqual("mysourcetype", udpInput.SourceType, assertRoot + "#43");

            udpInput.Remove();
            inputCollection.Refresh();
            Assert.IsFalse(inputCollection.ContainsKey(port), assertRoot + "#44");
        }
        public void WindowsEventLogInputCRUD()
        {
            Service         service         = Connect();
            InputCollection inputCollection = service.GetInputs();
            ServiceInfo     info            = service.GetInfo();

            if (info.OsName.Equals("Windows"))
            {
                string name = "sdk-input-wel";
                Args   args = new Args();

                if (inputCollection.ContainsKey(name))
                {
                    inputCollection.Remove(name);
                    inputCollection.Refresh();
                }
                Assert.IsFalse(inputCollection.ContainsKey(name), assertRoot + "#52");

                // CRUD Windows Event Log Input
                args.Add("lookup_host", service.Host);
                inputCollection.Create(name, InputKind.WindowsEventLog, args);
                Assert.IsTrue(inputCollection.ContainsKey(name), assertRoot + "#53");
                WindowsEventLogInput windowsEventLogInput = (WindowsEventLogInput)inputCollection.Get(name);

                windowsEventLogInput.Index      = "main";
                windowsEventLogInput.LookupHost = service.Host;
                windowsEventLogInput.Hosts      = "one.two.three,four.five.six";
                windowsEventLogInput.Update();

                Assert.AreEqual(service.Host, windowsEventLogInput.LookupHost, assertRoot + "#54");
                Assert.AreEqual("one.two.three,four.five.six", windowsEventLogInput.Hosts, assertRoot + "#55");
                Assert.AreEqual("main", windowsEventLogInput.Index, assertRoot + "#55");

                windowsEventLogInput.Remove();
                inputCollection.Refresh();
                Assert.IsFalse(inputCollection.ContainsKey(name), assertRoot + "#56");
            }
        }
        public void TcpSplunkInputCRUD()
        {
            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();
            }

            Assert.IsFalse(inputCollection.ContainsKey(port), assertRoot + "#29");

            inputCollection.Create(port, InputKind.TcpSplunk);
            Assert.IsTrue(inputCollection.ContainsKey(port), assertRoot + "#30");
            TcpSplunkInput tcpSplunkInput = (TcpSplunkInput)inputCollection.Get(port);

            tcpSplunkInput.ConnectionHost = "dns";
            tcpSplunkInput.Host           = "myhost";
            tcpSplunkInput.SSL            = false;
            bool   getSSL   = tcpSplunkInput.SSL;
            String getGroup = tcpSplunkInput.Group;

            tcpSplunkInput.Update();

            Assert.AreEqual("dns", tcpSplunkInput.ConnectionHost, assertRoot + "#31");
            Assert.AreEqual("myhost", tcpSplunkInput.Host, assertRoot + "#32");
            Assert.IsFalse(getSSL, assertRoot + "#33");
            Assert.AreEqual("listenerports", getGroup, "Expected the group of the TCP input to be listenerports");
            Assert.IsNull(tcpSplunkInput.Queue, "Expected the queue to initially be null");

            tcpSplunkInput.Remove();
            inputCollection.Refresh();
            Assert.IsFalse(inputCollection.ContainsKey(port), assertRoot + "#34");
        }
        public void WindowsWMIInputCRUD()
        {
            Service         service         = Connect();
            InputCollection inputCollection = service.GetInputs();
            ServiceInfo     info            = service.GetInfo();

            if (info.OsName.Equals("Windows"))
            {
                string name = "sdk-input-wmi";
                Args   args = new Args();

                if (inputCollection.ContainsKey(name))
                {
                    inputCollection.Remove(name);
                    inputCollection.Refresh();
                }

                Assert.IsFalse(inputCollection.ContainsKey(name), assertRoot + "#80");

                // CRUD Windows Wmi Input
                args.Add("classes", "PerfOS_Processor");
                args.Add("interval", 600);
                args.Add("lookup_host", service.Host);
                inputCollection.Create(name, InputKind.WindowsWmi, args);
                Assert.IsTrue(inputCollection.ContainsKey(name), assertRoot + "#81");
                WindowsWmiInput windowsWmiInput = (WindowsWmiInput)inputCollection.Get(name);

                Assert.AreEqual("Win32_PerfFormattedData_PerfOS_Processor", windowsWmiInput.Classes, assertRoot + "#82");
                Assert.AreEqual(600, windowsWmiInput.Interval, assertRoot + "#83");
                Assert.AreEqual(windowsWmiInput.LookupHost, service.Host, assertRoot + "#84");

                windowsWmiInput.Classes   = "PerfDisk_LogicalDisk";
                windowsWmiInput.Fields    = new string[] { "Caption" };
                windowsWmiInput.Index     = "main";
                windowsWmiInput.Interval  = 1200;
                windowsWmiInput.Instances = new string[] { "_Total" };
                windowsWmiInput.Servers   = "host1.splunk.com,host2.splunk.com";
                windowsWmiInput.Update();

                Assert.AreEqual("Win32_PerfFormattedData_PerfDisk_LogicalDisk", windowsWmiInput.Classes, assertRoot + "#85");
                Assert.AreEqual(1, windowsWmiInput.Fields.Length, assertRoot + "#86");
                Assert.IsTrue(this.Contains(windowsWmiInput.Fields, "Caption"), assertRoot + "#87");
                Assert.AreEqual("main", windowsWmiInput.Index, assertRoot + "#88");
                Assert.AreEqual(1200, windowsWmiInput.Interval, assertRoot + "#89");
                Assert.AreEqual(1, windowsWmiInput.Instances.Length, assertRoot + "#90");
                Assert.IsTrue(this.Contains(windowsWmiInput.Instances, "_Total"), assertRoot + "#91");
                Assert.AreEqual("host1.splunk.com,host2.splunk.com", windowsWmiInput.Servers, assertRoot + "#92");

                // set list fields
                windowsWmiInput.Fields = new string[] { "Caption", "Description" };
                windowsWmiInput.Update();

                Assert.AreEqual(2, windowsWmiInput.Fields.Length, assertRoot + "#93");
                Assert.IsTrue(this.Contains(windowsWmiInput.Fields, "Caption"), assertRoot + "#94");
                Assert.IsTrue(this.Contains(windowsWmiInput.Fields, "Description"), assertRoot + "#95");

                windowsWmiInput.Remove();
                inputCollection.Refresh();
                Assert.IsFalse(inputCollection.ContainsKey(name), assertRoot + "#96");
            }
        }
        public void ScriptInputCRUD()
        {
            Service         service         = Connect();
            InputCollection inputCollection = service.GetInputs();
            ServiceInfo     info            = service.GetInfo();

            // CRUD Script input
            string filename;

            if (info.OsName.Equals("Windows"))
            {
                filename = "echo.bat";
            }
            else
            {
                filename = "echo.sh";
            }

            Args args = new Args();

            args.Clear();
            args.Add("interval", "60");
            if (inputCollection.Get(filename) != null)
            {
                inputCollection.Remove(filename);
            }

            inputCollection.Create(filename, InputKind.Script, args);
            Assert.IsTrue(inputCollection.ContainsKey(filename), assertRoot + "#11");
            ScriptInput scriptInput = (ScriptInput)inputCollection.Get(filename);

            scriptInput.Host     = "three.four.com";
            scriptInput.Index    = "main";
            scriptInput.Interval = "120";
            if (service.VersionCompare("4.2.4") >= 0)
            {
                scriptInput.PassAuth = "admin";
            }

            scriptInput.RenameSource = "renamedSource";
            scriptInput.Source       = "source";
            scriptInput.SourceType   = "script";
            scriptInput.Update();

            Assert.AreEqual("three.four.com", scriptInput.Host, assertRoot + "#12");
            Assert.AreEqual("main", scriptInput.Index, assertRoot + "#13");
            Assert.AreEqual("120", scriptInput.Interval, assertRoot + "#14");
            if (service.VersionCompare("4.2.4") >= 0)
            {
                Assert.AreEqual("admin", scriptInput.PassAuth, assertRoot + "#15");
            }

            if (service.VersionCompare("5.0") >= 0)
            {
                Assert.AreEqual("source", scriptInput.Source, assertRoot + "#16");
            }
            else
            {
                Assert.AreEqual("renamedSource", scriptInput.Source, assertRoot + "#16");
            }

            Assert.AreEqual("script", scriptInput.SourceType, assertRoot + "#17");

            scriptInput.Remove();
            inputCollection.Refresh();
            Assert.IsFalse(inputCollection.ContainsKey(filename), assertRoot + "#18");
        }
        public void MonitorInputCRUD()
        {
            Service         service         = Connect();
            InputCollection inputCollection = service.GetInputs();
            ServiceInfo     info            = service.GetInfo();

            // CRUD Monitor input
            string filename;

            if (info.OsName.Equals("Windows"))
            {
                filename = "C:\\Windows\\WindowsUpdate.log"; // normally here
            }
            else if (info.OsName.Equals("Linux"))
            {
                filename = "/var/log/syslog";
            }
            else if (info.OsName.Equals("Darwin"))
            {
                filename = "/var/log/system.log";
            }
            else
            {
                throw new Exception("OS: " + info.OsName + " not supported");
            }

            if (inputCollection.ContainsKey(filename))
            {
                inputCollection.Remove(filename);
            }

            inputCollection.Create(filename, InputKind.Monitor);
            Assert.IsTrue(inputCollection.ContainsKey(filename));
            MonitorInput monitorInput = (MonitorInput)inputCollection.Get(filename);

            monitorInput.Blacklist  = "phonyregex*1";
            monitorInput.CheckIndex = true;
            monitorInput.CheckPath  = true;
            if (service.VersionCompare("4.2.1") >= 0)
            {
                monitorInput.CrcSalt         = "ThisIsSalt";
                monitorInput.IgnoreOlderThan = "1d";
                monitorInput.TimeBeforeClose = 120;
            }

            monitorInput.FollowTail   = false;
            monitorInput.Host         = "three.four.com";
            monitorInput.HostRegex    = "host*regex*";
            monitorInput.HostSegment  = string.Empty;
            monitorInput.Index        = "main";
            monitorInput.IsRecursive  = false;
            monitorInput.RenameSource = "renamedSource";
            monitorInput.SourceType   = "monitor";
            monitorInput.Whitelist    = "phonyregex*2";
            String index = monitorInput.Index;

            monitorInput.Update();

            //monitorInput.Disable();
            // some attributes are write only; check what we can.
            Assert.AreEqual("phonyregex*1", monitorInput.Blacklist, assertRoot + "#1");
            Assert.IsFalse(monitorInput.FollowTail, assertRoot + "#2");
            Assert.AreEqual("three.four.com", monitorInput.Host, assertRoot + "#3");
            Assert.AreEqual("host*regex*", monitorInput.HostRegex, assertRoot + "#4");
            if (service.VersionCompare("4.2.1") >= 0)
            {
                Assert.AreEqual("1d", monitorInput.IgnoreOlderThan, assertRoot + "#4");
                Assert.AreEqual(120, monitorInput.TimeBeforeClose, assertRoot + "#5");
            }
            Assert.AreEqual("main", index, assertRoot + "#6");
            Assert.IsFalse(monitorInput.IsRecursive, assertRoot + "#7");
            Assert.AreEqual("renamedSource", monitorInput.Source, assertRoot + "#8");
            Assert.AreEqual("monitor", monitorInput.SourceType, assertRoot + "#9");
            Assert.AreEqual("phonyregex*2", monitorInput.Whitelist, assertRoot + "#10");

            monitorInput.Disable();

            monitorInput.Remove();
            inputCollection.Refresh();
            inputCollection.Refresh();
            Assert.IsFalse(inputCollection.ContainsKey(filename), assertRoot + "#10");
        }