/* * Copyright (c) 2010-2012 Postgres-XC Development Group */ #include #include #include "gtm/libpq-fe.h" #include "gtm/gtm_c.h" #include "gtm/gtm_client.h" #include "test_common.h" pthread_key_t threadinfo_key; void setUp() { sprintf(connect_string, "host=localhost port=6666 node_name=one remote_type=%d", GTM_NODE_GTM); conn = PQconnectGTM(connect_string); if (conn == NULL) { client_log(("Error in connection\n")); exit(1); } client_log(("PGconnectGTM() ok.\n")); } void tearDown() { GTMPQfinish(conn); } void test_txn_21() { /* request parameters */ int txn_count = 2; GTM_IsolationLevel txn_isolation_level[GTM_MAX_GLOBAL_TRANSACTIONS]; bool txn_read_only[GTM_MAX_GLOBAL_TRANSACTIONS]; GTMProxy_ConnID txn_connid[GTM_MAX_GLOBAL_TRANSACTIONS]; /* results */ int txn_count2; GlobalTransactionId start_gxid; GTM_Timestamp start_ts; /* request parameters */ GlobalTransactionId gxid[GTM_MAX_GLOBAL_TRANSACTIONS]; /* results */ int status[GTM_MAX_GLOBAL_TRANSACTIONS]; int rc, i; for (i=0 ; i=0 ); _ASSERT( txn_count2==2 ); /* * commit test */ txn_count = txn_count2; for (i=0 ; i=0 ); _ASSERT( txn_count2==2 ); tearDown(); } void test_txn_22() { /* request parameters */ int txn_count = 2; GTM_IsolationLevel txn_isolation_level[GTM_MAX_GLOBAL_TRANSACTIONS]; bool txn_read_only[GTM_MAX_GLOBAL_TRANSACTIONS]; GTMProxy_ConnID txn_connid[GTM_MAX_GLOBAL_TRANSACTIONS]; /* results */ int txn_count2; GlobalTransactionId start_gxid; GTM_Timestamp start_ts; /* request parameters */ GlobalTransactionId gxid[GTM_MAX_GLOBAL_TRANSACTIONS]; /* results */ int status[GTM_MAX_GLOBAL_TRANSACTIONS]; int rc, i; for (i=0 ; i=0 ); _ASSERT( txn_count2==2 ); /* * abort test */ txn_count = txn_count2; for (i=0 ; i=0 ); _ASSERT( txn_count2==2 ); tearDown(); } void test_txn_23() { /* request parameters */ int txn_count = 2; GTM_IsolationLevel txn_isolation_level[GTM_MAX_GLOBAL_TRANSACTIONS]; bool txn_read_only[GTM_MAX_GLOBAL_TRANSACTIONS]; GTMProxy_ConnID txn_connid[GTM_MAX_GLOBAL_TRANSACTIONS]; /* results */ int txn_count2; GlobalTransactionId start_gxid; GTM_Timestamp start_ts; /* request parameters */ GlobalTransactionId gxid[GTM_MAX_GLOBAL_TRANSACTIONS]; /* results */ int status[GTM_MAX_GLOBAL_TRANSACTIONS]; GlobalTransactionId xmin_out; GlobalTransactionId xmax_out; GlobalTransactionId recent_global_xmin_out; int32 xcnt_out; int rc, i; for (i=0 ; i=0 ); _ASSERT( txn_count2==2 ); /* * snapshot get test */ txn_count = txn_count2; for (i=0 ; i=0 ); _ASSERT( txn_count2==2 ); tearDown(); } void test_txn_31() { GlobalTransactionId gxid; int rc; SETUP(); gxid = begin_transaction(conn, GTM_ISOLATION_SERIALIZABLE, timestamp); _ASSERT( gxid != InvalidGlobalTransactionId ); sleep(10); /* kill standby while sleeping. */ rc = prepare_transaction(conn, gxid); _ASSERT( rc>=0 ); rc = abort_transaction(conn, gxid); _ASSERT( rc>=0 ); tearDown(); } int main(int argc, char *argv[]) { test_txn2_01(); return 0; }