def test_15_insert_transaction(self):
        print("\n-----", sys._getframe().f_code.co_name, "-----")

        clients[0]['app'].insert_transaction(transactions[2])
        time.sleep(1)
        print("  ----> wait for notification")
        for j in range(
                client_num - 1
        ):  # client4 won't receive NOTIFY_INSERTED because it canceled.
            check_insert_response(j, transactions[2].transaction_id)
            if j == 0:
                check_insert_response(j, transactions[2].transaction_id)
        time.sleep(1)

        clients[1]['app'].insert_transaction(transactions[3])
        time.sleep(1)
        print("  ----> wait for notification")
        check_insert_response(1, transactions[3].transaction_id)

        for i in range(core_num):
            diff_notify = get_stat_diffs(i)['data_handler'].get(
                'NOTIFY_INSERTED', 0)
            print("[%d] received num of NOTIFY_INSERTED = %d" %
                  (i, diff_notify))
            if i in [
                    0, 4
            ]:  # core0 directly sends NOTIFY_INSERTED to client0 (so, the data_handler doesn't receive it)
                assert diff_notify == 0
            else:
                assert diff_notify == 1
    def test_21_insert_transactions(self):
        print("\n-----", sys._getframe().f_code.co_name, "-----")

        clients[2]['app'].insert_transaction(transactions[4])
        time.sleep(1)
        print("  ----> wait for notification")
        for j in range(client_num - 2):
            check_insert_response(j, transactions[4].transaction_id)
            if j == 2:
                check_insert_response(j, transactions[4].transaction_id)
        time.sleep(1)

        clients[1]['app'].insert_transaction(transactions[5])
        time.sleep(1)
        print("  ----> wait for notification")
        check_insert_response(1, transactions[5].transaction_id)

        for i in range(core_num):
            diff_notify = get_stat_diffs(i)['data_handler'].get(
                'NOTIFY_INSERTED', 0)
            print("[%d] received num of NOTIFY_INSERTED = %d" %
                  (i, diff_notify))
            if i in [2, 4]:
                assert diff_notify == 0
            else:
                assert diff_notify == 1
    def test_20_close_client_connection(self):
        print("\n-----", sys._getframe().f_code.co_name, "-----")
        clients[3]['app'].connection.close()  # disconnection will invoke LEAVE_MULTICAST_RECEIVER
        time.sleep(1)

        for i in range(core_num):
            diff_val = get_stat_diffs(i)['user_message'].get('LEAVE_MULTICAST_RECEIVER', 0)
            print("[%d] received num of LEAVE_MULTICAST_RECEIVER = %d" % (i, diff_val))
            if i == 3:  # core3 is initiating node that sends LEAVE_MULTICAST_RECEIVER (no receive)
                assert diff_val == 0
            else:
                assert diff_val == 1