114 lines
3.6 KiB
Python
114 lines
3.6 KiB
Python
from NSCP import Settings, Registry, Core, log, status, log_error, sleep
|
|
from test_helper import BasicTest, TestResult, Callable, setup_singleton, install_testcases, init_testcases, shutdown_testcases
|
|
from types import *
|
|
import random
|
|
import subprocess
|
|
import uuid
|
|
import os
|
|
import sys, stat, datetime, time
|
|
|
|
class Win32WMITest(BasicTest):
|
|
|
|
reg = None
|
|
conf = None
|
|
core = None
|
|
|
|
def desc(self):
|
|
return 'Testcase for w32 check_wmi module'
|
|
|
|
def title(self):
|
|
return 'Win32File tests'
|
|
|
|
def setup(self, plugin_id, prefix):
|
|
self.reg = Registry.get(plugin_id)
|
|
|
|
def teardown(self):
|
|
None
|
|
|
|
def get_count(self,perf):
|
|
if not perf:
|
|
return -1
|
|
(title, data) = perf.split('=')
|
|
if not data:
|
|
return -1
|
|
(count, warn, crit) = data.split(';')
|
|
return int(count)
|
|
|
|
|
|
def check_cli_ns(self):
|
|
result = TestResult('Checking CLI list-ns')
|
|
(ret, ns_msgs) = self.core.simple_exec('any', 'wmi', ['--list-all-ns', '--namespace', 'root'])
|
|
result.assert_equals(ret, 0, 'Check that --list-all-ns returns ok')
|
|
result.assert_equals(len(ns_msgs), 1, 'Check that --list-all-ns returns one entry')
|
|
if len(ns_msgs) > 0:
|
|
result.assert_contains(ns_msgs[0], 'CIMV2', 'Check that --list-all-ns contains cimv2')
|
|
return result
|
|
|
|
def check_cli_ls(self, ns, expected, missing):
|
|
result = TestResult('Checking CLI list-classes %s'%ns)
|
|
args = ['--list-classes', '--simple']
|
|
if ns != None:
|
|
args.extend(['--namespace', ns])
|
|
(ret, ns_msgs) = self.core.simple_exec('any', 'wmi', args)
|
|
result.assert_equals(ret, 0, 'Check that --list-classes returns ok')
|
|
result.assert_equals(len(ns_msgs), 1, 'Check that --list-classes returns one entry')
|
|
if len(ns_msgs) > 0:
|
|
result.assert_contains(ns_msgs[0], expected, 'Check that --list-classes contains %s'%expected)
|
|
result.assert_not_contains(ns_msgs[0], missing, 'Check that --list-classes does not contains %s'%missing)
|
|
return result
|
|
|
|
def check_cli_query(self, query, count, check, ns = None):
|
|
result = TestResult('Checking CLI query %s'%query)
|
|
args = ['--select', query, '--simple']
|
|
if ns != None:
|
|
args.extend(['--namespace', ns])
|
|
(ret, ns_msgs) = self.core.simple_exec('any', 'wmi', args)
|
|
result.assert_equals(ret, 0, 'Check that --select returns ok')
|
|
result.assert_equals(len(ns_msgs), 1, 'Check that --select returns one entry')
|
|
if len(ns_msgs) > 0:
|
|
result.add_message(count(ns_msgs[0].splitlines()), 'Check that it contains the right number of rows')
|
|
result.add_message(check(ns_msgs[0]), 'Check that it contains the right data')
|
|
return result
|
|
|
|
def run_test(self):
|
|
result = TestResult('Testing W32 file systems')
|
|
result.add(self.check_cli_ns())
|
|
result.add(self.check_cli_ls(None, 'Win32_Processor', 'LogFileEventConsumer'))
|
|
result.add(self.check_cli_ls('root\subscription', 'LogFileEventConsumer', 'Win32_Processor'))
|
|
result.add(self.check_cli_query('SELECT DeviceId, AddressWidth, Caption, Name FROM Win32_Processor', lambda x:x>1, lambda x:'CPU0' in x))
|
|
return result
|
|
|
|
def install(self, arguments):
|
|
conf = self.conf
|
|
conf.set_string('/modules', 'test_wmi', 'CheckWMI')
|
|
conf.set_string('/modules', 'pytest', 'PythonScript')
|
|
conf.set_string('/settings/pytest/scripts', 'test_w32wmi', 'test_w32_wmi.py')
|
|
conf.save()
|
|
|
|
def uninstall(self):
|
|
None
|
|
|
|
def help(self):
|
|
None
|
|
|
|
def init(self, plugin_id, prefix):
|
|
self.reg = Registry.get(plugin_id)
|
|
self.core = Core.get(plugin_id)
|
|
self.conf = Settings.get(plugin_id)
|
|
|
|
def shutdown(self):
|
|
None
|
|
|
|
setup_singleton(Win32WMITest)
|
|
|
|
all_tests = [Win32WMITest]
|
|
|
|
def __main__(args):
|
|
install_testcases(all_tests)
|
|
|
|
def init(plugin_id, plugin_alias, script_alias):
|
|
init_testcases(plugin_id, plugin_alias, script_alias, all_tests)
|
|
|
|
def shutdown():
|
|
shutdown_testcases()
|