123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852 |
- # -*- coding: utf-8 -*-
- # Import python libs
- from __future__ import absolute_import, print_function, unicode_literals
- # Import Salt Libs
- import salt.pillar.mysql as mysql
- # Import Salt Testing libs
- from tests.support.unit import TestCase, skipIf
- @skipIf(mysql.MySQLdb is None, "MySQL-python module not installed")
- class MysqlPillarTestCase(TestCase):
- maxDiff = None
- def test_001_extract_queries_legacy(self):
- return_data = mysql.MySQLExtPillar()
- args, kwargs = ["SELECT blah"], {}
- qbuffer = return_data.extract_queries(args, kwargs)
- self.assertEqual(
- [
- [
- None,
- {
- "query": "SELECT blah",
- "depth": 0,
- "as_list": False,
- "with_lists": None,
- "ignore_null": False,
- },
- ]
- ],
- qbuffer,
- )
- def test_002_extract_queries_list(self):
- return_data = mysql.MySQLExtPillar()
- args, kwargs = (
- [
- "SELECT blah",
- "SELECT blah2",
- ("SELECT blah3",),
- ("SELECT blah4", 2),
- {"query": "SELECT blah5"},
- {"query": "SELECT blah6", "depth": 2},
- {"query": "SELECT blah7", "as_list": True},
- {"query": "SELECT blah8", "with_lists": "1"},
- {"query": "SELECT blah9", "with_lists": "1,2"},
- ],
- {},
- )
- qbuffer = return_data.extract_queries(args, kwargs)
- self.assertEqual(
- [
- [
- None,
- {
- "query": "SELECT blah",
- "depth": 0,
- "as_list": False,
- "with_lists": None,
- "ignore_null": False,
- },
- ],
- [
- None,
- {
- "query": "SELECT blah2",
- "depth": 0,
- "as_list": False,
- "with_lists": None,
- "ignore_null": False,
- },
- ],
- [
- None,
- {
- "query": "SELECT blah3",
- "depth": 0,
- "as_list": False,
- "with_lists": None,
- "ignore_null": False,
- },
- ],
- [
- None,
- {
- "query": "SELECT blah4",
- "depth": 2,
- "as_list": False,
- "with_lists": None,
- "ignore_null": False,
- },
- ],
- [
- None,
- {
- "query": "SELECT blah5",
- "depth": 0,
- "as_list": False,
- "with_lists": None,
- "ignore_null": False,
- },
- ],
- [
- None,
- {
- "query": "SELECT blah6",
- "depth": 2,
- "as_list": False,
- "with_lists": None,
- "ignore_null": False,
- },
- ],
- [
- None,
- {
- "query": "SELECT blah7",
- "depth": 0,
- "as_list": True,
- "with_lists": None,
- "ignore_null": False,
- },
- ],
- [
- None,
- {
- "query": "SELECT blah8",
- "depth": 0,
- "as_list": False,
- "with_lists": [1],
- "ignore_null": False,
- },
- ],
- [
- None,
- {
- "query": "SELECT blah9",
- "depth": 0,
- "as_list": False,
- "with_lists": [1, 2],
- "ignore_null": False,
- },
- ],
- ],
- qbuffer,
- )
- def test_003_extract_queries_kwarg(self):
- return_data = mysql.MySQLExtPillar()
- args, kwargs = (
- [],
- {
- "1": "SELECT blah",
- "2": "SELECT blah2",
- "3": ("SELECT blah3",),
- "4": ("SELECT blah4", 2),
- "5": {"query": "SELECT blah5"},
- "6": {"query": "SELECT blah6", "depth": 2},
- "7": {"query": "SELECT blah7", "as_list": True},
- },
- )
- qbuffer = return_data.extract_queries(args, kwargs)
- self.assertEqual(
- [
- [
- "1",
- {
- "query": "SELECT blah",
- "depth": 0,
- "as_list": False,
- "with_lists": None,
- "ignore_null": False,
- },
- ],
- [
- "2",
- {
- "query": "SELECT blah2",
- "depth": 0,
- "as_list": False,
- "with_lists": None,
- "ignore_null": False,
- },
- ],
- [
- "3",
- {
- "query": "SELECT blah3",
- "depth": 0,
- "as_list": False,
- "with_lists": None,
- "ignore_null": False,
- },
- ],
- [
- "4",
- {
- "query": "SELECT blah4",
- "depth": 2,
- "as_list": False,
- "with_lists": None,
- "ignore_null": False,
- },
- ],
- [
- "5",
- {
- "query": "SELECT blah5",
- "depth": 0,
- "as_list": False,
- "with_lists": None,
- "ignore_null": False,
- },
- ],
- [
- "6",
- {
- "query": "SELECT blah6",
- "depth": 2,
- "as_list": False,
- "with_lists": None,
- "ignore_null": False,
- },
- ],
- [
- "7",
- {
- "query": "SELECT blah7",
- "depth": 0,
- "as_list": True,
- "with_lists": None,
- "ignore_null": False,
- },
- ],
- ],
- qbuffer,
- )
- def test_004_extract_queries_mixed(self):
- return_data = mysql.MySQLExtPillar()
- args, kwargs = (
- [
- "SELECT blah1",
- ("SELECT blah2", 2),
- {"query": "SELECT blah3", "as_list": True},
- ],
- {
- "1": "SELECT blah1",
- "2": ("SELECT blah2", 2),
- "3": {"query": "SELECT blah3", "as_list": True},
- },
- )
- qbuffer = return_data.extract_queries(args, kwargs)
- self.assertEqual(
- [
- [
- None,
- {
- "query": "SELECT blah1",
- "depth": 0,
- "as_list": False,
- "with_lists": None,
- "ignore_null": False,
- },
- ],
- [
- None,
- {
- "query": "SELECT blah2",
- "depth": 2,
- "as_list": False,
- "with_lists": None,
- "ignore_null": False,
- },
- ],
- [
- None,
- {
- "query": "SELECT blah3",
- "depth": 0,
- "as_list": True,
- "with_lists": None,
- "ignore_null": False,
- },
- ],
- [
- "1",
- {
- "query": "SELECT blah1",
- "depth": 0,
- "as_list": False,
- "with_lists": None,
- "ignore_null": False,
- },
- ],
- [
- "2",
- {
- "query": "SELECT blah2",
- "depth": 2,
- "as_list": False,
- "with_lists": None,
- "ignore_null": False,
- },
- ],
- [
- "3",
- {
- "query": "SELECT blah3",
- "depth": 0,
- "as_list": True,
- "with_lists": None,
- "ignore_null": False,
- },
- ],
- ],
- qbuffer,
- )
- def test_005_extract_queries_bogus_list(self):
- # This test is specifically checking that empty queries are dropped
- return_data = mysql.MySQLExtPillar()
- args, kwargs = (
- [
- "SELECT blah",
- "",
- "SELECT blah2",
- ("SELECT blah3",),
- ("",),
- ("SELECT blah4", 2),
- tuple(),
- ("SELECT blah5",),
- {"query": "SELECT blah6"},
- {"query": ""},
- {"query": "SELECT blah7", "depth": 2},
- {"not_a_query": "in sight!"},
- {"query": "SELECT blah8", "as_list": True},
- ],
- {},
- )
- qbuffer = return_data.extract_queries(args, kwargs)
- self.assertEqual(
- [
- [
- None,
- {
- "query": "SELECT blah",
- "depth": 0,
- "as_list": False,
- "with_lists": None,
- "ignore_null": False,
- },
- ],
- [
- None,
- {
- "query": "SELECT blah2",
- "depth": 0,
- "as_list": False,
- "with_lists": None,
- "ignore_null": False,
- },
- ],
- [
- None,
- {
- "query": "SELECT blah3",
- "depth": 0,
- "as_list": False,
- "with_lists": None,
- "ignore_null": False,
- },
- ],
- [
- None,
- {
- "query": "SELECT blah4",
- "depth": 2,
- "as_list": False,
- "with_lists": None,
- "ignore_null": False,
- },
- ],
- [
- None,
- {
- "query": "SELECT blah5",
- "depth": 0,
- "as_list": False,
- "with_lists": None,
- "ignore_null": False,
- },
- ],
- [
- None,
- {
- "query": "SELECT blah6",
- "depth": 0,
- "as_list": False,
- "with_lists": None,
- "ignore_null": False,
- },
- ],
- [
- None,
- {
- "query": "SELECT blah7",
- "depth": 2,
- "as_list": False,
- "with_lists": None,
- "ignore_null": False,
- },
- ],
- [
- None,
- {
- "query": "SELECT blah8",
- "depth": 0,
- "as_list": True,
- "with_lists": None,
- "ignore_null": False,
- },
- ],
- ],
- qbuffer,
- )
- def test_006_extract_queries_bogus_kwargs(self):
- # this test is cut down as most of the path matches test_*_bogus_list
- return_data = mysql.MySQLExtPillar()
- args, kwargs = [], {"1": "SELECT blah", "2": "", "3": "SELECT blah2"}
- qbuffer = return_data.extract_queries(args, kwargs)
- self.assertEqual(
- [
- [
- "1",
- {
- "query": "SELECT blah",
- "depth": 0,
- "as_list": False,
- "with_lists": None,
- "ignore_null": False,
- },
- ],
- [
- "3",
- {
- "query": "SELECT blah2",
- "depth": 0,
- "as_list": False,
- "with_lists": None,
- "ignore_null": False,
- },
- ],
- ],
- qbuffer,
- )
- def test_011_enter_root(self):
- return_data = mysql.MySQLExtPillar()
- return_data.enter_root("test")
- self.assertEqual(return_data.result["test"], return_data.focus)
- return_data.enter_root(None)
- self.assertEqual(return_data.result, return_data.focus)
- def test_021_process_fields(self):
- return_data = mysql.MySQLExtPillar()
- return_data.process_fields(["a", "b"], 0)
- self.assertEqual(return_data.num_fields, 2)
- self.assertEqual(return_data.depth, 1)
- return_data.process_fields(["a", "b"], 2)
- self.assertEqual(return_data.num_fields, 2)
- self.assertEqual(return_data.depth, 1)
- return_data.process_fields(["a", "b", "c", "d"], 0)
- self.assertEqual(return_data.num_fields, 4)
- self.assertEqual(return_data.depth, 3)
- return_data.process_fields(["a", "b", "c", "d"], 1)
- self.assertEqual(return_data.num_fields, 4)
- self.assertEqual(return_data.depth, 1)
- return_data.process_fields(["a", "b", "c", "d"], 2)
- self.assertEqual(return_data.num_fields, 4)
- self.assertEqual(return_data.depth, 2)
- return_data.process_fields(["a", "b", "c", "d"], 3)
- self.assertEqual(return_data.num_fields, 4)
- self.assertEqual(return_data.depth, 3)
- return_data.process_fields(["a", "b", "c", "d"], 4)
- self.assertEqual(return_data.num_fields, 4)
- self.assertEqual(return_data.depth, 3)
- def test_111_process_results_legacy(self):
- return_data = mysql.MySQLExtPillar()
- return_data.process_fields(["a", "b"], 0)
- return_data.with_lists = []
- return_data.process_results([[1, 2]])
- self.assertEqual({1: 2}, return_data.result)
- def test_112_process_results_legacy_multiple(self):
- return_data = mysql.MySQLExtPillar()
- return_data.process_fields(["a", "b"], 0)
- return_data.with_lists = []
- return_data.process_results([[1, 2], [3, 4], [5, 6]])
- self.assertEqual({1: 2, 3: 4, 5: 6}, return_data.result)
- def test_121_process_results_depth_0(self):
- return_data = mysql.MySQLExtPillar()
- return_data.process_fields(["a", "b", "c", "d"], 0)
- return_data.with_lists = []
- return_data.enter_root(None)
- return_data.process_results([[1, 2, 3, 4], [5, 6, 7, 8]])
- self.assertEqual({1: {2: {3: 4}}, 5: {6: {7: 8}}}, return_data.result)
- def test_122_process_results_depth_1(self):
- return_data = mysql.MySQLExtPillar()
- return_data.process_fields(["a", "b", "c", "d"], 1)
- return_data.with_lists = []
- return_data.enter_root(None)
- return_data.process_results([[1, 2, 3, 4], [5, 6, 7, 8]])
- self.assertEqual(
- {1: {"b": 2, "c": 3, "d": 4}, 5: {"b": 6, "c": 7, "d": 8}},
- return_data.result,
- )
- def test_123_process_results_depth_2(self):
- return_data = mysql.MySQLExtPillar()
- return_data.process_fields(["a", "b", "c", "d"], 2)
- return_data.with_lists = []
- return_data.enter_root(None)
- return_data.process_results([[1, 2, 3, 4], [5, 6, 7, 8]])
- self.assertEqual(
- {1: {2: {"c": 3, "d": 4}}, 5: {6: {"c": 7, "d": 8}}}, return_data.result
- )
- def test_124_process_results_depth_3(self):
- return_data = mysql.MySQLExtPillar()
- return_data.process_fields(["a", "b", "c", "d"], 3)
- return_data.with_lists = []
- return_data.enter_root(None)
- return_data.process_results([[1, 2, 3, 4], [5, 6, 7, 8]])
- self.assertEqual({1: {2: {3: 4}}, 5: {6: {7: 8}}}, return_data.result)
- def test_125_process_results_depth_4(self):
- return_data = mysql.MySQLExtPillar()
- return_data.process_fields(["a", "b", "c", "d"], 4)
- return_data.with_lists = []
- return_data.enter_root(None)
- return_data.process_results([[1, 2, 3, 4], [5, 6, 7, 8]])
- self.assertEqual({1: {2: {3: 4}}, 5: {6: {7: 8}}}, return_data.result)
- def test_131_process_results_overwrite_legacy_multiple(self):
- return_data = mysql.MySQLExtPillar()
- return_data.process_fields(["a", "b"], 0)
- return_data.with_lists = []
- return_data.process_results([[1, 2], [3, 4], [1, 6]])
- self.assertEqual({1: 6, 3: 4}, return_data.result)
- def test_132_process_results_merge_depth_0(self):
- return_data = mysql.MySQLExtPillar()
- return_data.process_fields(["a", "b", "c", "d"], 0)
- return_data.with_lists = []
- return_data.enter_root(None)
- return_data.process_results([[1, 2, 3, 4], [1, 6, 7, 8]])
- self.assertEqual({1: {2: {3: 4}, 6: {7: 8}}}, return_data.result)
- def test_133_process_results_overwrite_depth_0(self):
- return_data = mysql.MySQLExtPillar()
- return_data.process_fields(["a", "b", "c", "d"], 0)
- return_data.with_lists = []
- return_data.enter_root(None)
- return_data.process_results([[1, 2, 3, 4], [1, 2, 3, 8]])
- self.assertEqual({1: {2: {3: 8}}}, return_data.result)
- def test_134_process_results_deepmerge_depth_0(self):
- return_data = mysql.MySQLExtPillar()
- return_data.process_fields(["a", "b", "c", "d"], 0)
- return_data.with_lists = []
- return_data.enter_root(None)
- return_data.process_results([[1, 2, 3, 4], [1, 2, 7, 8]])
- self.assertEqual({1: {2: {3: 4, 7: 8}}}, return_data.result)
- def test_135_process_results_overwrite_depth_1(self):
- return_data = mysql.MySQLExtPillar()
- return_data.process_fields(["a", "b", "c", "d"], 1)
- return_data.with_lists = []
- return_data.enter_root(None)
- return_data.process_results([[1, 2, 3, 4], [1, 6, 7, 8]])
- self.assertEqual({1: {"b": 6, "c": 7, "d": 8}}, return_data.result)
- def test_136_process_results_merge_depth_2(self):
- return_data = mysql.MySQLExtPillar()
- return_data.process_fields(["a", "b", "c", "d"], 2)
- return_data.with_lists = []
- return_data.enter_root(None)
- return_data.process_results([[1, 2, 3, 4], [1, 6, 7, 8]])
- self.assertEqual(
- {1: {2: {"c": 3, "d": 4}, 6: {"c": 7, "d": 8}}}, return_data.result
- )
- def test_137_process_results_overwrite_depth_2(self):
- return_data = mysql.MySQLExtPillar()
- return_data.process_fields(["a", "b", "c", "d"], 2)
- return_data.with_lists = []
- return_data.enter_root(None)
- return_data.process_results([[1, 2, 3, 4], [1, 2, 7, 8]])
- self.assertEqual({1: {2: {"c": 7, "d": 8}}}, return_data.result)
- def test_201_process_results_complexity_multiresults(self):
- return_data = mysql.MySQLExtPillar()
- return_data.process_fields(["a", "b", "c", "d"], 2)
- return_data.with_lists = []
- return_data.enter_root(None)
- return_data.process_results([[1, 2, 3, 4]])
- return_data.process_results([[1, 2, 7, 8]])
- self.assertEqual({1: {2: {"c": 7, "d": 8}}}, return_data.result)
- def test_202_process_results_complexity_as_list(self):
- return_data = mysql.MySQLExtPillar()
- return_data.process_fields(["a", "b", "c", "d"], 2)
- return_data.with_lists = []
- return_data.enter_root(None)
- return_data.as_list = True
- return_data.process_results([[1, 2, 3, 4]])
- return_data.process_results([[1, 2, 7, 8]])
- self.assertEqual({1: {2: {"c": [3, 7], "d": [4, 8]}}}, return_data.result)
- def test_203_process_results_complexity_as_list_deeper(self):
- return_data = mysql.MySQLExtPillar()
- return_data.process_fields(["a", "b", "c", "d"], 0)
- return_data.with_lists = []
- return_data.enter_root(None)
- return_data.as_list = True
- return_data.process_results([[1, 2, 3, 4]])
- return_data.process_results([[1, 2, 3, 8]])
- self.assertEqual({1: {2: {3: [4, 8]}}}, return_data.result)
- def test_204_process_results_complexity_as_list_mismatch_depth(self):
- return_data = mysql.MySQLExtPillar()
- return_data.as_list = True
- return_data.with_lists = []
- return_data.enter_root(None)
- return_data.process_fields(["a", "b", "c", "d"], 0)
- return_data.process_results([[1, 2, 3, 4]])
- return_data.process_results([[1, 2, 3, 5]])
- return_data.process_fields(["a", "b", "c", "d", "e"], 0)
- return_data.process_results([[1, 2, 3, 6, 7]])
- self.assertEqual({1: {2: {3: [4, 5, {6: 7}]}}}, return_data.result)
- def test_205_process_results_complexity_as_list_mismatch_depth_reversed(self):
- return_data = mysql.MySQLExtPillar()
- return_data.as_list = True
- return_data.with_lists = []
- return_data.enter_root(None)
- return_data.process_fields(["a", "b", "c", "d", "e"], 0)
- return_data.process_results([[1, 2, 3, 6, 7]])
- return_data.process_results([[1, 2, 3, 8, 9]])
- return_data.process_fields(["a", "b", "c", "d"], 0)
- return_data.process_results([[1, 2, 3, 4]])
- return_data.process_results([[1, 2, 3, 5]])
- self.assertEqual({1: {2: {3: [{6: 7, 8: 9}, 4, 5]}}}, return_data.result)
- def test_206_process_results_complexity_as_list_mismatch_depth_weird_order(self):
- return_data = mysql.MySQLExtPillar()
- return_data.as_list = True
- return_data.with_lists = []
- return_data.enter_root(None)
- return_data.process_fields(["a", "b", "c", "d", "e"], 0)
- return_data.process_results([[1, 2, 3, 6, 7]])
- return_data.process_fields(["a", "b", "c", "d"], 0)
- return_data.process_results([[1, 2, 3, 4]])
- return_data.process_fields(["a", "b", "c", "d", "e"], 0)
- return_data.process_results([[1, 2, 3, 8, 9]])
- return_data.process_fields(["a", "b", "c", "d"], 0)
- return_data.process_results([[1, 2, 3, 5]])
- self.assertEqual({1: {2: {3: [{6: 7}, 4, {8: 9}, 5]}}}, return_data.result)
- def test_207_process_results_complexity_collision_mismatch_depth(self):
- return_data = mysql.MySQLExtPillar()
- return_data.as_list = False
- return_data.with_lists = []
- return_data.enter_root(None)
- return_data.process_fields(["a", "b", "c", "d"], 0)
- return_data.process_results([[1, 2, 3, 4]])
- return_data.process_results([[1, 2, 3, 5]])
- return_data.process_fields(["a", "b", "c", "d", "e"], 0)
- return_data.process_results([[1, 2, 3, 6, 7]])
- self.assertEqual({1: {2: {3: {6: 7}}}}, return_data.result)
- def test_208_process_results_complexity_collision_mismatch_depth_reversed(self):
- return_data = mysql.MySQLExtPillar()
- return_data.as_list = False
- return_data.with_lists = []
- return_data.enter_root(None)
- return_data.process_fields(["a", "b", "c", "d", "e"], 0)
- return_data.process_results([[1, 2, 3, 6, 7]])
- return_data.process_results([[1, 2, 3, 8, 9]])
- return_data.process_fields(["a", "b", "c", "d"], 0)
- return_data.process_results([[1, 2, 3, 4]])
- return_data.process_results([[1, 2, 3, 5]])
- self.assertEqual({1: {2: {3: 5}}}, return_data.result)
- def test_209_process_results_complexity_collision_mismatch_depth_weird_order(self):
- return_data = mysql.MySQLExtPillar()
- return_data.as_list = False
- return_data.with_lists = []
- return_data.enter_root(None)
- return_data.process_fields(["a", "b", "c", "d", "e"], 0)
- return_data.process_results([[1, 2, 3, 6, 7]])
- return_data.process_fields(["a", "b", "c", "d"], 0)
- return_data.process_results([[1, 2, 3, 4]])
- return_data.process_fields(["a", "b", "c", "d", "e"], 0)
- return_data.process_results([[1, 2, 3, 8, 9]])
- return_data.process_fields(["a", "b", "c", "d"], 0)
- return_data.process_results([[1, 2, 3, 5]])
- self.assertEqual({1: {2: {3: 5}}}, return_data.result)
- def test_20A_process_results_complexity_as_list_vary(self):
- return_data = mysql.MySQLExtPillar()
- return_data.as_list = True
- return_data.with_lists = []
- return_data.enter_root(None)
- return_data.process_fields(["a", "b", "c", "d", "e"], 0)
- return_data.process_results([[1, 2, 3, 6, 7]])
- return_data.process_results([[1, 2, 3, 8, 9]])
- return_data.process_fields(["a", "b", "c", "d"], 0)
- return_data.process_results([[1, 2, 3, 4]])
- return_data.as_list = False
- return_data.process_results([[1, 2, 3, 5]])
- self.assertEqual({1: {2: {3: 5}}}, return_data.result)
- def test_207_process_results_complexity_roots_collision(self):
- return_data = mysql.MySQLExtPillar()
- return_data.as_list = False
- return_data.with_lists = []
- return_data.enter_root(None)
- return_data.process_fields(["a", "b", "c", "d"], 0)
- return_data.process_results([[1, 2, 3, 4]])
- return_data.enter_root(1)
- return_data.process_results([[5, 6, 7, 8]])
- self.assertEqual({1: {5: {6: {7: 8}}}}, return_data.result)
- def test_301_process_results_with_lists(self):
- """
- Validates the following results:
- {'a': [
- {'c': [
- {'e': 1},
- {'g': 2}
- ]
- },
- {'h': [
- {'j': 3, 'k': 4}
- ]
- }
- ]}
- """
- return_data = mysql.MySQLExtPillar()
- return_data.as_list = False
- return_data.with_lists = [1, 3]
- return_data.enter_root(None)
- return_data.process_fields(["a", "b", "c", "d", "e", "v"], 0)
- return_data.process_results(
- [
- ["a", "b", "c", "d", "e", 1],
- ["a", "b", "c", "f", "g", 2],
- ["a", "z", "h", "y", "j", 3],
- ["a", "z", "h", "y", "k", 4],
- ]
- )
- assert "a" in return_data.result
- for x in return_data.result["a"]:
- if "c" in x:
- assert list(x.keys()) == ["c"], x.keys()
- for y in x["c"]:
- if "e" in y:
- assert list(y.keys()) == ["e"]
- assert y["e"] == 1
- elif "g" in y:
- assert list(y.keys()) == ["g"]
- assert y["g"] == 2
- else:
- raise ValueError("Unexpected value {0}".format(y))
- elif "h" in x:
- assert len(x["h"]) == 1
- for y in x["h"]:
- if "j" in y:
- assert len(y.keys()) == 2
- assert y["j"] == 3
- elif "h" in y:
- assert len(y.keys()) == 2
- assert y["k"] == 4
- else:
- raise ValueError("Unexpected value {0}".format(y))
- else:
- raise ValueError("Unexpected value {0}".format(x))
- def test_302_process_results_with_lists_consecutive(self):
- """
- Validates the following results:
- {'a': [
- [[
- {'e': 1},
- {'g': 2}
- ]
- ],
- [[
- {'j': 3, 'k': 4}
- ]
- ]
- ]}
- """
- return_data = mysql.MySQLExtPillar()
- return_data.as_list = False
- return_data.with_lists = [1, 2, 3]
- return_data.enter_root(None)
- return_data.process_fields(["a", "b", "c", "d", "e", "v"], 0)
- return_data.process_results(
- [
- ["a", "b", "c", "d", "e", 1],
- ["a", "b", "c", "f", "g", 2],
- ["a", "z", "h", "y", "j", 3],
- ["a", "z", "h", "y", "k", 4],
- ]
- )
- assert "a" in return_data.result
- for x in return_data.result["a"]:
- assert len(x) == 1
- if len(x[0][0]) == 1:
- for y in x[0]:
- if "e" in y:
- assert list(y.keys()) == ["e"]
- assert y["e"] == 1
- elif "g" in y:
- assert list(y.keys()) == ["g"]
- assert y["g"] == 2
- else:
- raise ValueError("Unexpected value {0}".format(y))
- elif len(x[0][0]) == 2:
- for y in x[0]:
- if "j" in y:
- assert len(y.keys()) == 2
- assert y["j"] == 3
- elif "k" in y:
- assert len(y.keys()) == 2
- assert y["k"] == 4
- else:
- raise ValueError("Unexpected value {0}".format(len(x[0][0])))
- else:
- raise ValueError("Unexpected value {0}".format(x))
|