예제 #1
0
    def testBindSubstitutionCase(self):
        """
        _testBindSubstitutionCase_

        Verify that bind substitution works correctly when the bind variables in
        the query and the bind variables list have different case.
        """
        sql = "INSERT INTO FILE_LUMIS (FILE_LUMI_ID, RUN_NUM, LUMI_SECTION_NUM, FILE_ID) VALUES (:FILE_LUMI_ID, :RUN_NUM, :LUMI_SECTION_NUM, :FILE_ID)"
        binds = [{"lumi_section_num": "27414", "run_num": "1", "file_lumi_id": 1, "file_id": 1},
                 {"lumi_section_num": "26422", "run_num": "1", "file_lumi_id": 2, "file_id": 1},
                 {"lumi_section_num": "29838", "run_num": "1", "file_lumi_id": 3, "file_id": 1}]

        myInterface = MySQLInterface(logger = logging, engine = None)
        (updatedSQL, bindList) = myInterface.substitute(sql, binds)

        goodSQL = "INSERT INTO FILE_LUMIS (FILE_LUMI_ID, RUN_NUM, LUMI_SECTION_NUM, FILE_ID) VALUES (%s, %s, %s, %s)"

        assert updatedSQL == goodSQL, \
               "Error: SQL updated failed."

        assert len(bindList) == 3, \
               "Error: Wrong number of binds."
        assert bindList[0] == (1, '1', '27414', 1), \
               "Error: Bind 0 has wrong values."
        assert bindList[1] == (2, '1', '26422', 1), \
               "Error: Bind 1 has wrong values."
        assert bindList[2] == (3, '1', '29838', 1), \
               "Error: Bind 2 has wrong values."

        return
예제 #2
0
    def testBindSubstitutionB(self):
        """
        _testBindSubstitutionB_

        Test another query that has been causing problems.
        """
        sql = "INSERT INTO FILE_LUMIS (FILE_LUMI_ID, RUN_NUM, LUMI_SECTION_NUM, FILE_ID) VALUES (:file_lumi_id, :run_num, :lumi_section_num, :file_id)"
        binds = [{"lumi_section_num": "27414", "run_num": "1", "file_lumi_id": 1, "file_id": 1},
                 {"lumi_section_num": "26422", "run_num": "1", "file_lumi_id": 2, "file_id": 1},
                 {"lumi_section_num": "29838", "run_num": "1", "file_lumi_id": 3, "file_id": 1}]

        myInterface = MySQLInterface(logger = logging, engine = None)
        (updatedSQL, bindList) = myInterface.substitute(sql, binds)

        goodSQL = "INSERT INTO FILE_LUMIS (FILE_LUMI_ID, RUN_NUM, LUMI_SECTION_NUM, FILE_ID) VALUES (%s, %s, %s, %s)"

        assert updatedSQL == goodSQL, \
               "Error: SQL updated failed."

        assert len(bindList) == 3, \
               "Error: Wrong number of binds."
        assert bindList[0] == (1, '1', '27414', 1), \
               "Error: Bind 0 has wrong values."
        assert bindList[1] == (2, '1', '26422', 1), \
               "Error: Bind 1 has wrong values."
        assert bindList[2] == (3, '1', '29838', 1), \
               "Error: Bind 2 has wrong values."

        return
예제 #3
0
    def testBindSubstitutionA(self):
        """
        _testBindSubstitutionA_

        Verify that bind substition works correctly with similarly named bind
        variables.
        """
        sql = "INSERT INTO RELEASE_VERSIONS (RELEASE_VERSION_ID, RELEASE_VERSION) VALUES (:release_version_id, :release_version)"
        binds = [{"release_version_id": 1, "release_version": "CMSSW_12_1_8"}]

        myInterface = MySQLInterface(logger = logging, engine = None)
        (updatedSQL, bindList) = myInterface.substitute(sql, binds)

        goodSQL = "INSERT INTO RELEASE_VERSIONS (RELEASE_VERSION_ID, RELEASE_VERSION) VALUES (%s, %s)"
        assert goodSQL == updatedSQL, \
               "Error: SQL is different."

        assert len(bindList) == 1, \
               "Error: bindList is malformed."
        assert len(bindList[0]) == 2, \
               "Error: bind list is the wrong length."
        assert bindList[0][0] == 1, \
               "Error: First bind parameter is wrong."
        assert bindList[0][1] == "CMSSW_12_1_8", \
               "Error: Second bind parameter is wrong."

        return
예제 #4
0
    def testBindSubstitutionA(self):
        """
        _testBindSubstitutionA_

        Verify that bind substition works correctly with similarly named bind
        variables.
        """
        sql = "INSERT INTO RELEASE_VERSIONS (RELEASE_VERSION_ID, RELEASE_VERSION) VALUES (:release_version_id, :release_version)"
        binds = [{"release_version_id": 1, "release_version": "CMSSW_12_1_8"}]

        myInterface = MySQLInterface(logger=logging, engine=None)
        (updatedSQL, bindList) = myInterface.substitute(sql, binds)

        goodSQL = "INSERT INTO RELEASE_VERSIONS (RELEASE_VERSION_ID, RELEASE_VERSION) VALUES (%s, %s)"
        assert goodSQL == updatedSQL, \
               "Error: SQL is different."

        assert len(bindList) == 1, \
               "Error: bindList is malformed."
        assert len(bindList[0]) == 2, \
               "Error: bind list is the wrong length."
        assert bindList[0][0] == 1, \
               "Error: First bind parameter is wrong."
        assert bindList[0][1] == "CMSSW_12_1_8", \
               "Error: Second bind parameter is wrong."

        return
예제 #5
0
    def testBindSubstitutionCase(self):
        """
        _testBindSubstitutionCase_

        Verify that bind substitution works correctly when the bind variables in
        the query and the bind variables list have different case.
        """
        sql = "INSERT INTO FILE_LUMIS (FILE_LUMI_ID, RUN_NUM, LUMI_SECTION_NUM, FILE_ID) VALUES (:FILE_LUMI_ID, :RUN_NUM, :LUMI_SECTION_NUM, :FILE_ID)"
        binds = [{
            "lumi_section_num": "27414",
            "run_num": "1",
            "file_lumi_id": 1,
            "file_id": 1
        }, {
            "lumi_section_num": "26422",
            "run_num": "1",
            "file_lumi_id": 2,
            "file_id": 1
        }, {
            "lumi_section_num": "29838",
            "run_num": "1",
            "file_lumi_id": 3,
            "file_id": 1
        }]

        myInterface = MySQLInterface(logger=logging, engine=None)
        (updatedSQL, bindList) = myInterface.substitute(sql, binds)

        goodSQL = "INSERT INTO FILE_LUMIS (FILE_LUMI_ID, RUN_NUM, LUMI_SECTION_NUM, FILE_ID) VALUES (%s, %s, %s, %s)"

        assert updatedSQL == goodSQL, \
               "Error: SQL updated failed."

        assert len(bindList) == 3, \
               "Error: Wrong number of binds."
        assert bindList[0] == (1, '1', '27414', 1), \
               "Error: Bind 0 has wrong values."
        assert bindList[1] == (2, '1', '26422', 1), \
               "Error: Bind 1 has wrong values."
        assert bindList[2] == (3, '1', '29838', 1), \
               "Error: Bind 2 has wrong values."

        return
예제 #6
0
    def testBindSubstitutionB(self):
        """
        _testBindSubstitutionB_

        Test another query that has been causing problems.
        """
        sql = "INSERT INTO FILE_LUMIS (FILE_LUMI_ID, RUN_NUM, LUMI_SECTION_NUM, FILE_ID) VALUES (:file_lumi_id, :run_num, :lumi_section_num, :file_id)"
        binds = [{
            "lumi_section_num": "27414",
            "run_num": "1",
            "file_lumi_id": 1,
            "file_id": 1
        }, {
            "lumi_section_num": "26422",
            "run_num": "1",
            "file_lumi_id": 2,
            "file_id": 1
        }, {
            "lumi_section_num": "29838",
            "run_num": "1",
            "file_lumi_id": 3,
            "file_id": 1
        }]

        myInterface = MySQLInterface(logger=logging, engine=None)
        (updatedSQL, bindList) = myInterface.substitute(sql, binds)

        goodSQL = "INSERT INTO FILE_LUMIS (FILE_LUMI_ID, RUN_NUM, LUMI_SECTION_NUM, FILE_ID) VALUES (%s, %s, %s, %s)"

        assert updatedSQL == goodSQL, \
               "Error: SQL updated failed."

        assert len(bindList) == 3, \
               "Error: Wrong number of binds."
        assert bindList[0] == (1, '1', '27414', 1), \
               "Error: Bind 0 has wrong values."
        assert bindList[1] == (2, '1', '26422', 1), \
               "Error: Bind 1 has wrong values."
        assert bindList[2] == (3, '1', '29838', 1), \
               "Error: Bind 2 has wrong values."

        return