def test_command_execute_get_dbs(stc, tmpdir, meth_mgr): global PKG, COMMAND, COMMAND_NAME, TEST_MULTIPLE_DB_FILE # FIXME: Do the various checks to ensure the db file's result are properly # loaded into the JSON string result_file = os.path.join(os.getcwd(), TEST_MULTIPLE_DB_FILE) db_list = [] with AutoCommand('.'.join([PKG, COMMAND_NAME])) as cmd: export_to_json.get_this_cmd = MagicMock(return_value=cmd) export_to_json.get_active_results_db = MagicMock(return_value=result_file) db_list = export_to_json.get_dbs("SUMMARY") assert len(db_list) == 1 assert db_list[0].endswith(TEST_MULTIPLE_DB_FILE) db_list = export_to_json.get_dbs("LAST_ITERATION") assert len(db_list) == 1 assert db_list[0].endswith(TEST_MULTIPLE_DB_ITR_FILE) db_list = export_to_json.get_dbs("ALL_ITERATION") assert len(db_list) > 1 # Verify error case exceptionError = "" try: export_to_json.get_dbs("nothing") except Exception, e: exceptionError = str(e) assert exceptionError == "Invalid database selected: nothing"
def test_command_execute_with_sql_modlist(stc, tmpdir, meth_mgr): global PKG, COMMAND, COMMAND_NAME, TEST_DB_FILE # FIXME: Do the various checks to ensure the db file's result are properly # loaded into the JSON string result_file = os.path.join(os.getcwd(), TEST_DB_FILE) template_file = os.path.join(str(tmpdir), 'template.xml') create_template_file(template_file) # Simulate running through the TopologyTestGroupCommand and # TestGroupCommands ResultInterface.create_test() ResultInterface.start_test() with AutoCommand('.'.join([PKG, COMMAND_NAME])) as cmd: export_to_json.get_this_cmd = MagicMock(return_value=cmd) export_to_json.get_active_results_db = MagicMock(return_value=result_file) cmd.Set('ChartTemplateJsonFileName', template_file) cmd.SetCollection("Series", ["Select TotalFrameCount from AnalyzerPortResults", "1, 2"]) cmd.SetCollection("XAxisCategories", []) cmd.Set("TemplateModifier", "{\"yAxis\": {\"title\": {\"text\": " "{{SELECT MIN(Id) FROM AnalyzerPortResults}}}}, \"xAxis\": " "{\"categories\": {{SELECT Id FROM AnalyzerPortResults}}}, " "\"series\": {\"data\": {{SELECT TotalFrameCount, " "TotalOctetCount FROM AnalyzerPortResults}}}}") export_to_json.run(cmd.Get('ChartTemplateJsonFileName'), cmd.Get('Title'), cmd.Get('XAxisTitle'), cmd.GetCollection('XAxisCategories'), cmd.Get('YAxisTitle'), cmd.GetCollection('YAxisCategories'), cmd.GetCollection('Series'), cmd.Get('TemplateModifier'), cmd.Get('SrcDatabase'), "LEVEL_2") ResultInterface.end_test() stm_test_result = meth_man_utils.get_stm_test_result() assert stm_test_result is not None json_results = stm_test_result.GetCollection('JsonResults') selected = None for result in json_results: obj = json.loads(result) assert ProviderConst.INFO in obj assert ProviderConst.DATA_FORMAT in obj if obj[ProviderConst.DATA_FORMAT] == EnumDataFormat.chart: selected = obj break assert selected is not None data = selected[ProviderConst.DATA] x_cat = data[ChartConst.X_CAT] y_cat = data[ChartConst.Y_CAT] mod_list = data[ChartConst.MOD_LIST] assert mod_list == "{\"yAxis\": {\"title\": {\"text\": 1}}, \"xAxis\": " \ "{\"categories\": [1, 2]}, \"series\": " \ "{\"data\": [[1151261, 147361408], [1239945, 158712960]]}}" assert x_cat is None assert y_cat is None
def test_command_execute_with_sql(stc, tmpdir, meth_mgr): global PKG, COMMAND, COMMAND_NAME, TEST_DB_FILE # FIXME: Do the various checks to ensure the db file's result are properly # loaded into the JSON string result_file = os.path.join(os.getcwd(), TEST_DB_FILE) template_file = os.path.join(str(tmpdir), 'template.xml') create_template_file(template_file) # Simulate running through the TopologyTestGroupCommand and # TestGroupCommands ResultInterface.create_test() ResultInterface.start_test() with AutoCommand('.'.join([PKG, COMMAND_NAME])) as cmd: export_to_json.get_this_cmd = MagicMock(return_value=cmd) export_to_json.get_active_results_db = MagicMock(return_value=result_file) cmd.Set('ChartTemplateJsonFileName', template_file) cmd.Set("Title", "Select MIN(Id) From AnalyzerPortResults") cmd.Set("XAxisTitle", "Select MIN(Id) From AnalyzerPortResults") cmd.SetCollection("XAxisCategories", ["Select Id From AnalyzerPortResults", "3", "4"]) cmd.Set("YAxisTitle", "Select MIN(Id) From AnalyzerPortResults") cmd.SetCollection("YAxisCategories", ["Select Id From AnalyzerPortResults", "5"]) cmd.SetCollection("Series", ["3", "Select TotalFrameCount from AnalyzerPortResults", "1, 2"]) cmd.Set("TemplateModifier", "{\"yAxis\": {\"title\": {\"text\": \"Modified Label\"}}}") export_to_json.run("", "", "", "", "", "", ["Select TotalFrameCount from AnalyzerPortResults"], "", "SUMMARY", "") ResultInterface.end_test() stm_test_result = meth_man_utils.get_stm_test_result() assert stm_test_result is not None json_results = stm_test_result.GetCollection('JsonResults') selected = None for result in json_results: obj = json.loads(result) assert ProviderConst.INFO in obj assert ProviderConst.DATA_FORMAT in obj if obj[ProviderConst.DATA_FORMAT] == EnumDataFormat.chart: selected = obj break assert selected is not None data = selected[ProviderConst.DATA] assert "{u'text': u'1'}" == str(data[ChartConst.TITLE]) assert "{u'text': u'1'}" == str(data[ChartConst.X_LAB]) assert "[u'1', u'2', u'3', u'4']" == str(data[ChartConst.X_CAT]) assert "{u'text': u'1'}" == str(data[ChartConst.Y_LAB]) assert "[u'1', u'2', u'5']" == str(data[ChartConst.Y_CAT]) assert "[{u'data': [3]}, {u'data': [1151261, 1239945]}, {u'data': [1, 2]}]" \ == str(data[ChartConst.SERIES]) assert "{u'yAxis': {u'title': {u'text': u'Modified Label'}}}" == \ str(data[ChartConst.MOD_LIST])
def test_command_execute_invalid_sql(stc, tmpdir): global PKG, COMMAND, COMMAND_NAME, TEST_DB_FILE # FIXME: Do the various checks to ensure the db file's result are properly # loaded into the JSON string result_file = os.path.join(os.getcwd(), TEST_DB_FILE) template_file = os.path.join(str(tmpdir), 'template.xml') create_template_file(template_file) # Simulate running through the TopologyTestGroupCommand and # TestGroupCommands ResultInterface.create_test() ResultInterface.start_test() with AutoCommand('.'.join([PKG, COMMAND_NAME])) as cmd: export_to_json.get_this_cmd = MagicMock(return_value=cmd) export_to_json.get_active_results_db = MagicMock(return_value=result_file) cmd.Set('ChartTemplateJsonFileName', template_file) cmd.SetCollection("Series", []) cmd.SetCollection("XAxisCategories", ["SELECT test FROM test"]) fail_msg = '' try: export_to_json.run("", "", "", "", "", "", "", "", "SUMMARY", "") except RuntimeError as e: fail_msg = str(e) assert 'no such table: test' in fail_msg cmd.SetCollection("XAxisCategories", []) cmd.SetCollection("YAxisCategories", ["SELECT test FROM test"]) fail_msg = '' try: export_to_json.run("", "", "", "", "", "", "", "", "SUMMARY", "") except RuntimeError as e: fail_msg = str(e) assert 'no such table: test' in fail_msg cmd.SetCollection("YAxisCategories", []) cmd.SetCollection("Series", ["SELECT test FROM test"]) fail_msg = '' try: export_to_json.run("", "", "", "", "", "", "", "", "SUMMARY", "") except RuntimeError as e: fail_msg = str(e) assert 'no such table: test' in fail_msg cmd.SetCollection("Series", [""]) cmd.Set("TemplateModifier", "{\"yAxis\": {\"title\": {\"text\": " + "{{SELECT test FROM test}}}}}") fail_msg = '' try: export_to_json.run("", "", "", "", "", "", "", "", "SUMMARY", "") except RuntimeError as e: fail_msg = str(e) assert 'no such table: test' in fail_msg
def test_command_execute_with_sql_mix_single_pair_multiple_dbs(stc, tmpdir, meth_mgr): global PKG, COMMAND, COMMAND_NAME, TEST_MULTIPLE_DB_FILE # FIXME: Do the various checks to ensure the db file's result are properly # loaded into the JSON string result_file = os.path.join(os.getcwd(), TEST_MULTIPLE_DB_FILE) template_file = os.path.join(str(tmpdir), 'template.xml') create_template_file(template_file) # Simulate running through the TopologyTestGroupCommand and # TestGroupCommands ResultInterface.create_test() ResultInterface.start_test() with AutoCommand('.'.join([PKG, COMMAND_NAME])) as cmd: export_to_json.get_this_cmd = MagicMock(return_value=cmd) export_to_json.get_active_results_db = MagicMock(return_value=result_file) cmd.Set('ChartTemplateJsonFileName', template_file) cmd.SetCollection("Series", ["Select TotalFrameCount, Id from AnalyzerPortResults Where Id = 1", "[3, 2], [5, 4]", "7.1, 6.4", "Select ParentHnd from AnalyzerPortResults Where Id = 1", "Select Handle, Id, ParentHnd from AnalyzerPortResults Where Id = 1", "blah"]) export_to_json.run("", "", "", "", "", "", [""], "", "ALL_ITERATION", "") ResultInterface.end_test() stm_test_result = meth_man_utils.get_stm_test_result() assert stm_test_result is not None json_results = stm_test_result.GetCollection('JsonResults') selected = None for result in json_results: obj = json.loads(result) assert ProviderConst.INFO in obj assert ProviderConst.DATA_FORMAT in obj if obj[ProviderConst.DATA_FORMAT] == EnumDataFormat.chart: selected = obj break assert selected is not None data = selected[ProviderConst.DATA] expectedData = "[{u'data': [[298838, 1], [294329, 1]]}, {u'data': [[3, 2], [5, 4]]}, " + \ "{u'data': [7.1, 6.4]}, {u'data': [164282, 164282]}, " + \ "{u'data': [[164787, 1, 164282], [171335, 1, 164282]]}, {u'data': [u'blah']}]" assert expectedData == str(data[ChartConst.SERIES])
def test_command_execute_empty(stc, tmpdir, meth_mgr): global PKG, COMMAND, COMMAND_NAME, TEST_DB_FILE # FIXME: Do the various checks to ensure the db file's result are properly # loaded into the JSON string result_file = os.path.join(os.getcwd(), TEST_DB_FILE) template_file = os.path.join(str(tmpdir), 'template.xml') create_template_file(template_file) # Simulate running through the TopologyTestGroupCommand and # TestGroupCommands ResultInterface.create_test() ResultInterface.start_test() with AutoCommand('.'.join([PKG, COMMAND_NAME])) as cmd: export_to_json.get_this_cmd = MagicMock(return_value=cmd) export_to_json.get_active_results_db = MagicMock(return_value=result_file) cmd.Set('ChartTemplateJsonFileName', template_file) cmd.Set("Title", "") cmd.Set("XAxisTitle", "") cmd.SetCollection("XAxisCategories", []) cmd.Set("YAxisTitle", "") cmd.SetCollection("YAxisCategories", []) cmd.SetCollection("Series", [""]) export_to_json.run("", "", "", "", "", "", "", "", "SUMMARY", "") ResultInterface.end_test() stm_test_result = meth_man_utils.get_stm_test_result() assert stm_test_result is not None json_results = stm_test_result.GetCollection('JsonResults') selected = None for result in json_results: obj = json.loads(result) assert ProviderConst.INFO in obj assert ProviderConst.DATA_FORMAT in obj if obj[ProviderConst.DATA_FORMAT] == EnumDataFormat.chart: selected = obj break assert selected is not None data = selected[ProviderConst.DATA] assert "{u'text': u''}" == str(data[ChartConst.TITLE]) assert "{u'text': u''}" == str(data[ChartConst.X_LAB]) assert "None" == str(data[ChartConst.X_CAT]) assert "{u'text': u''}" == str(data[ChartConst.Y_LAB]) assert "None" == str(data[ChartConst.Y_CAT])
def test_command_execute_default(stc, tmpdir, meth_mgr): global PKG, COMMAND, COMMAND_NAME, TEST_MULTIPLE_DB_FILE # FIXME: Do the various checks to ensure the db file's result are properly # loaded into the JSON string result_file = os.path.join(os.getcwd(), TEST_MULTIPLE_DB_FILE) template_file = os.path.join(str(tmpdir), 'template.xml') create_template_file(template_file) # Simulate running through the TopologyTestGroupCommand and # TestGroupCommands ResultInterface.create_test() ResultInterface.start_test() with AutoCommand('.'.join([PKG, COMMAND_NAME])) as cmd: export_to_json.get_this_cmd = MagicMock(return_value=cmd) export_to_json.get_active_results_db = MagicMock(return_value=result_file) cmd.Set('ChartTemplateJsonFileName', template_file) export_to_json.run("", "", "", "", "", "", "", "", "SUMMARY", "GROUP_1") ResultInterface.end_test() stm_test_result = meth_man_utils.get_stm_test_result() assert stm_test_result is not None json_results = stm_test_result.GetCollection('JsonResults') selected = None for result in json_results: obj = json.loads(result) info = obj[ProviderConst.INFO] assert ProviderConst.REPORT_GROUP in info assert info[ProviderConst.REPORT_GROUP] == "GROUP_1" assert ProviderConst.DATA_FORMAT in obj if obj[ProviderConst.DATA_FORMAT] == EnumDataFormat.chart: selected = obj break assert selected is not None data = selected[ProviderConst.DATA] assert "{u'text': u'Result Node Param Handles'}" == str(data[ChartConst.TITLE]) assert "{u'text': u'Id'}" == str(data[ChartConst.X_LAB]) assert "[u'1', u'2', u'3', u'4']" == str(data[ChartConst.X_CAT]) assert "{u'text': u'Handle'}" == str(data[ChartConst.Y_LAB]) assert "None" == str(data[ChartConst.Y_CAT]) assert "[{u'data': [164769, 164771, 164774, 171322]}]" == str(data[ChartConst.SERIES]) assert "{u'series': [{u'name': u'Handles'}]}" == str(data[ChartConst.MOD_LIST])
def test_command_execute_with_sql_multiple_dbs(stc, tmpdir, meth_mgr): global PKG, COMMAND, COMMAND_NAME, TEST_MULTIPLE_DB_FILE # FIXME: Do the various checks to ensure the db file's result are properly # loaded into the JSON string result_file = os.path.join(os.getcwd(), TEST_MULTIPLE_DB_FILE) template_file = os.path.join(str(tmpdir), 'template.xml') create_template_file(template_file) # Simulate running through the TopologyTestGroupCommand and # TestGroupCommands ResultInterface.create_test() ResultInterface.start_test() with AutoCommand('.'.join([PKG, COMMAND_NAME])) as cmd: export_to_json.get_this_cmd = MagicMock(return_value=cmd) export_to_json.get_active_results_db = MagicMock(return_value=result_file) cmd.Set('ChartTemplateJsonFileName', template_file) cmd.SetCollection("Series", ["3", "Select TotalFrameCount from AnalyzerPortResults", "1, 2"]) cmd.Set("SrcDatabase", "ALL_ITERATION") export_to_json.run("", "", "", "", "", "", ["Select TotalFrameCount from AnalyzerPortResults"], "", "ALL_ITERATION", "") ResultInterface.end_test() stm_test_result = meth_man_utils.get_stm_test_result() assert stm_test_result is not None json_results = stm_test_result.GetCollection('JsonResults') selected = None for result in json_results: obj = json.loads(result) assert ProviderConst.INFO in obj assert ProviderConst.DATA_FORMAT in obj if obj[ProviderConst.DATA_FORMAT] == EnumDataFormat.chart: selected = obj break assert selected is not None data = selected[ProviderConst.DATA] assert "[{u'data': [3]}, {u'data': [298838, 287903, 294329, 289852]}, {u'data': [1, 2]}]" \ == str(data[ChartConst.SERIES])
def test_validation(stc, tmpdir): global PKG, COMMAND, COMMAND_NAME, TEST_DB_FILE # FIXME: Do the various checks to ensure the db file's result are properly # loaded into the JSON string template_file = os.path.join(str(tmpdir), 'template.xml') create_template_file(template_file) ChartTemplateJsonFileName = template_file Title = "Test Chart" XAxisTitle = "Time" XAxisCategories = ["1t", "2t", "3t"] YAxisTitle = "Routes" YAxisCategories = ["a", "b", "c"] Series = ["Select TotalFrameCount from AnalyzerPortResults"] TemplateModifier = "{\"yAxis\": {\"title\": {\"text\": \"Modified Label\"}}}" SrcDatabase = "LAST_ITERATION" ReportGroup = "LEVEL_1" assert export_to_json.validate(ChartTemplateJsonFileName, Title, XAxisTitle, XAxisCategories, YAxisTitle, YAxisCategories, Series, TemplateModifier, SrcDatabase, ReportGroup) == "" assert export_to_json.validate(ChartTemplateJsonFileName, "", "", [], "", [], Series, "", SrcDatabase, ReportGroup) == "" assert "Invalid Chart Template" in \ export_to_json.validate("", Title, XAxisTitle, XAxisCategories, YAxisTitle, YAxisCategories, Series, TemplateModifier, SrcDatabase, ReportGroup) assert "1 is not of type u'string'" in \ export_to_json.validate(ChartTemplateJsonFileName, 1, XAxisTitle, XAxisCategories, YAxisTitle, YAxisCategories, Series, TemplateModifier, SrcDatabase, ReportGroup) assert "Invalid Chart Template: """ in \ export_to_json.validate("", Title, XAxisTitle, XAxisCategories, YAxisTitle, YAxisCategories, Series, TemplateModifier, SrcDatabase, ReportGroup) assert "[1, 2] is not of type u'string'" in \ export_to_json.validate(ChartTemplateJsonFileName, Title, [1, 2], XAxisCategories, YAxisTitle, YAxisCategories, Series, TemplateModifier, SrcDatabase, ReportGroup) assert "1 is not of type u'array'" in \ export_to_json.validate(ChartTemplateJsonFileName, Title, XAxisTitle, 1, YAxisTitle, YAxisCategories, Series, TemplateModifier, SrcDatabase, ReportGroup) assert "1 is not of type u'string'" in \ export_to_json.validate(ChartTemplateJsonFileName, Title, XAxisTitle, XAxisCategories, 1, YAxisCategories, Series, TemplateModifier, SrcDatabase, ReportGroup) assert "1 is not of type u'array'" in \ export_to_json.validate(ChartTemplateJsonFileName, Title, XAxisTitle, XAxisCategories, YAxisTitle, 1, Series, TemplateModifier, SrcDatabase, ReportGroup) assert "1 is not of type u'array'" in \ export_to_json.validate(ChartTemplateJsonFileName, Title, XAxisTitle, XAxisCategories, YAxisTitle, YAxisCategories, 1, TemplateModifier, SrcDatabase, ReportGroup) assert "Invalid Series specified: []" in \ export_to_json.validate(ChartTemplateJsonFileName, Title, XAxisTitle, XAxisCategories, YAxisTitle, YAxisCategories, [], TemplateModifier, SrcDatabase, ReportGroup) assert "Type Error: expected string or buffer" in \ export_to_json.validate(ChartTemplateJsonFileName, Title, XAxisTitle, XAxisCategories, YAxisTitle, YAxisCategories, Series, [1], SrcDatabase, ReportGroup) assert "Empty SrcDatabase property is not allowed" in \ export_to_json.validate(ChartTemplateJsonFileName, Title, XAxisTitle, XAxisCategories, YAxisTitle, YAxisCategories, Series, TemplateModifier, "", ReportGroup) assert "Empty ReportGroup property is not allowed" in \ export_to_json.validate(ChartTemplateJsonFileName, Title, XAxisTitle, XAxisCategories, YAxisTitle, YAxisCategories, Series, TemplateModifier, SrcDatabase, "") # Test for invalid SrcDatabase and ReportGroup enums fail_msg = '' with AutoCommand('.'.join([PKG, COMMAND_NAME])) as cmd: try: cmd.Set('SrcDatabase', 'invalid') except RuntimeError as e: fail_msg = str(e) assert 'CStcInvalidArgument Invalid enum value' in fail_msg fail_msg = '' with AutoCommand('.'.join([PKG, COMMAND_NAME])) as cmd: try: cmd.Set('ReportGroup', 'invalid') except RuntimeError as e: fail_msg = str(e) assert 'CStcInvalidArgument Invalid enum value' in fail_msg