persistentstorage/sqlite3api/TEST/t_sqliteapi.c
branchRCL_3
changeset 24 cc28652e0254
parent 23 26645d81f48d
child 25 047f208ea78f
equal deleted inserted replaced
23:26645d81f48d 24:cc28652e0254
   940 			threadIdx = i;
   940 			threadIdx = i;
   941 			break;
   941 			break;
   942 			}
   942 			}
   943 		}
   943 		}
   944 	
   944 	
   945 	srand((unsigned)&ThreadFunc);
       
   946 	
       
   947 	PrintS("Thread \"%s\" - begin\r\n", (char*)pname);
   945 	PrintS("Thread \"%s\" - begin\r\n", (char*)pname);
   948 	err = sqlite3_open(TheTestDbName, &db);
   946 	err = sqlite3_open(TheTestDbName, &db);
   949 	TEST2(err, SQLITE_OK);
   947 	TEST2(err, SQLITE_OK);
   950 	TEST(db != 0);
   948 	TEST(db != 0);
   951 	
   949 	
   952 	while(records < KRecordsCount)
   950 	while(records < KRecordsCount)
   953 		{
   951 		{
   954         if((records % 10) == 0)
       
   955             {
       
   956             PrintSI("Thread \"%s\", %d records.\r\n", (char*)pname, records);
       
   957             }
       
   958 		err = sqlite3_exec(db, "BEGIN", 0, 0, &errmsg);
   952 		err = sqlite3_exec(db, "BEGIN", 0, 0, &errmsg);
   959 		if(err == SQLITE_OK)
   953 		if(err == SQLITE_OK)
   960 			{
   954 			{
   961 			err = sqlite3_exec(db, "INSERT INTO A VALUES(0,0,0.0,'',x'00')", 0, 0, &errmsg);
   955 			err = sqlite3_exec(db, "INSERT INTO A VALUES(0,0,0.0,'',x'00')", 0, 0, &errmsg);
   962 			if(err == SQLITE_OK)
   956 			if(err == SQLITE_OK)
   970 			}
   964 			}
   971 		TEST(err == SQLITE_OK || err == SQLITE_BUSY);
   965 		TEST(err == SQLITE_OK || err == SQLITE_BUSY);
   972 		if(err == SQLITE_OK)
   966 		if(err == SQLITE_OK)
   973 			{
   967 			{
   974 			TheInsertRecCnt[threadIdx]	+= KCommitRecordsCount;
   968 			TheInsertRecCnt[threadIdx]	+= KCommitRecordsCount;
   975 			records += KCommitRecordsCount;
   969 			records += 2;
   976 			}
   970 			}
   977 		else if(err == SQLITE_BUSY)
   971 		else if(err == SQLITE_BUSY)
   978 			{
   972 			{
   979 			++TheLockErrCnt[threadIdx];
   973 			++TheLockErrCnt[threadIdx];
   980 			(void)sqlite3_exec(db, "ROLLBACK", 0, 0, 0);
   974 			(void)sqlite3_exec(db, "ROLLBACK", 0, 0, 0);
   981 			if(errmsg)
   975 			if(errmsg)
   982 				{
   976 				{
   983                 char fmt[100];
   977 				PrintSI("Err msg: %s. Err: %d.\r\n", errmsg, err);
   984                 strcpy(fmt, "Thread \"");
       
   985                 strcat(fmt, (char*)pname);
       
   986                 strcat(fmt, "\". Err msg: %s. Err: %d.\r\n");
       
   987 				PrintSI(fmt, errmsg, err);
       
   988 				sqlite3_free(errmsg);
   978 				sqlite3_free(errmsg);
   989 				errmsg = 0;
   979 				errmsg = 0;
   990 				}
   980 				}
   991 			usleep((rand() % 3000) + 500);
   981 			usleep(100);
   992 			}
   982 			}
   993 		}
   983 		}
   994 
   984 
   995 	err = sqlite3_close(db);
   985 	err = sqlite3_close(db);
   996 	TEST2(err, SQLITE_OK);
   986 	TEST2(err, SQLITE_OK);
  1355 int main(int argc, void** argv)
  1345 int main(int argc, void** argv)
  1356 	{
  1346 	{
  1357 	UNUSED_ARG(argc);
  1347 	UNUSED_ARG(argc);
  1358 	UNUSED_ARG(argv);
  1348 	UNUSED_ARG(argv);
  1359 
  1349 
  1360 	TestOpen("t_sqliteapi test");
       
  1361 	TestTitle();
  1350 	TestTitle();
  1362 
  1351 
  1363 	TestHeapMark();
  1352 	TestHeapMark();
  1364 		
  1353 		
  1365 	TestEnvCreate();
  1354 	TestEnvCreate();