Пример #1
0
void test_database_init()
{
  scheduler_t* scheduler;
  PGresult* db_result;
  GString* sql;

  scheduler = scheduler_init(testdb, NULL);
  database_init(scheduler);

  FO_ASSERT_PTR_NOT_NULL(scheduler->db_conn);

  sprintf(sqltmp, check_scheduler_tables, PQdb(scheduler->db_conn));
  sql = g_string_new(sqltmp);
  g_string_append(sql, "'users';");

  /* get the url for the fossology instance */
  db_result = database_exec(scheduler, sql->str);
  //printf("sql: %s\n", sql->str);
  // TODO skip this test since the order reported here is random, also it will crash if PQntuples < 5
  #if 0
  if(PQresultStatus(db_result) == PGRES_TUPLES_OK && PQntuples(db_result) != 0)
  {
    //printf("result: %s\n",  g_strdup(PQgetvalue(db_result, 0, 0)));
    FO_ASSERT_STRING_EQUAL(g_strdup(PQgetvalue(db_result, 0, 0)), "user_pk");
    FO_ASSERT_STRING_EQUAL(g_strdup(PQgetvalue(db_result, 1, 0)), "user_name");
    FO_ASSERT_STRING_EQUAL(g_strdup(PQgetvalue(db_result, 2, 0)), "root_folder_fk");
    FO_ASSERT_STRING_EQUAL(g_strdup(PQgetvalue(db_result, 3, 0)), "user_desc");
    FO_ASSERT_STRING_EQUAL(g_strdup(PQgetvalue(db_result, 4, 0)), "user_seed");
  }
  #endif
  PQclear(db_result);
  g_string_free(sql, TRUE);
  scheduler_destroy(scheduler);
}
Пример #2
0
void test_database_update_event()
{
  scheduler_t* scheduler;
  char sql[512];
  PGresult* db_result;

  scheduler = scheduler_init(testdb, NULL);

  FO_ASSERT_PTR_NULL(scheduler->db_conn);
  database_init(scheduler);
  FO_ASSERT_PTR_NOT_NULL(scheduler->db_conn);
  
  Prepare_Testing_Data(scheduler);

  database_update_event(scheduler, NULL);
  sprintf(sql, "SELECT * FROM job;");
  db_result = database_exec(scheduler, sql);
  //printf("result: %s", PQget(db_result, 0, "job_name"));
  if(PQresultStatus(db_result) == PGRES_TUPLES_OK && PQntuples(db_result) != 0)
  {
    FO_ASSERT_STRING_EQUAL(PQget(db_result, 0, "job_name"), "testing file");
    FO_ASSERT_EQUAL(atoi(PQget(db_result, 0, "job_user_fk")), 1);
  }  
  PQclear(db_result);

  database_reset_queue(scheduler); 

  scheduler_destroy(scheduler);
}
Пример #3
0
bool record_delete(database_handler_t* handler, const char* tablename, int64_t id)
{
	char buf[960];
	snprintf(buf, sizeof(buf), "DELETE FROM `%s` WHERE id=%ld", tablename, id);
	if (!database_prepare(handler, buf)) { return false; }
	if (!database_exec(handler)) { return false; }
	return true;
}
Пример #4
0
bool table_delete(database_handler_t* handler, const char* tablename)
{
	char buf[960];
	snprintf(buf, sizeof(buf), "DROP TABLE IF EXISTS `%s`", tablename);
	if (!database_prepare(handler, buf)) { return false; }
	if (!database_exec(handler)) { return false; }
	return true;
}
Пример #5
0
bool table_create(database_handler_t* handler, const char* tablename)
{
	char buf[960];
	snprintf(buf, sizeof(buf), "CREATE TABLE IF NOT EXISTS `%s` (`id` bigint unsigned NOT NULL, `data` longblob NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8", tablename);
	if (!database_prepare(handler, buf)) { return false; }
	if (!database_exec(handler)) { return false; }
	return true;
}
Пример #6
0
bool record_create(database_handler_t* handler, const char* tablename, int64_t id, const void* data, size_t len)
{
	char buf[960];
	MYSQL_BIND param[1];
	unsigned long lengths[1] = {len};
	snprintf(buf, sizeof(buf), "INSERT INTO `%s`(id, data) VALUES(%ld, ?)", tablename, id);
	if (!database_prepare(handler, buf)) { return false; }
	memset(param, 0, sizeof(param));
	param[0].buffer_type = MYSQL_TYPE_LONG_BLOB;
	param[0].buffer = (void*)data;
	param[0].length = &lengths[0];
	if (!database_bind_param(handler, param)) { return false; }
	if (!database_exec(handler)) { return false; }
	return true;
}
Пример #7
0
bool record_update(database_handler_t* handler, const char* tablename, int64_t id, const void* data, size_t len)
{
	char buf[960];
	MYSQL_BIND param[1];
	unsigned long lengths[1] = {len};
	snprintf(buf, sizeof(buf), "UPDATE `%s` SET data=? WHERE id=%ld", tablename, id);
	if (!database_prepare(handler, buf)) { return false; }
	memset(param, 0, sizeof(param));
	param[0].buffer_type = MYSQL_TYPE_LONG_BLOB;
	param[0].buffer = (void*)data;
	param[0].length = &lengths[0];
	if (!database_bind_param(handler, param)) { return false; }
	if (!database_exec(handler)) { return false; }
	/*size = lengths[0];*/
	return true;
}
Пример #8
0
bool record_select(database_handler_t* handler, const char* tablename, int64_t id, void* data, size_t* len)
{
	char buf[960];
	MYSQL_BIND result[1];
	unsigned long lengths[1] = {0};
	snprintf(buf, sizeof(buf), "SELECT data FROM `%s` where id=%ld", tablename, id);
	if (!database_prepare(handler, buf)) { return false; }
	if (!database_exec(handler)) { return false; }
	memset(result, 0, sizeof(result));
	result[0].buffer_type = MYSQL_TYPE_LONG_BLOB;
	result[0].buffer = (void*)data;
	result[0].buffer_length = *len;
	result[0].length = &lengths[0];
	if (!database_bind_result(handler, result)) { return false; }
	if (!database_fetch(handler)) { return false; }
	if (!database_free_result(handler)) { return false; }
	*len = lengths[0];
	return true;
}
Пример #9
0
/**
 * Local function for testing data prepare
 */
int Prepare_Testing_Data_Scheduler(scheduler_t * scheduler)
{
  char sql[512];
  int upload_pk, job_pk, jq_pk;
  PGresult* db_result;

  sprintf(sql, "INSERT INTO upload (upload_desc,upload_filename,user_fk,upload_mode,upload_origin) VALUES('testing upload data', 'testing file', '1', '100', 'testing file')");
  database_exec(scheduler, sql);

  /* get upload_pk of just added upload */
  sprintf(sql, "SELECT currval('upload_upload_pk_seq') as mykey FROM %s", "upload");
  db_result = database_exec(scheduler, sql);
  upload_pk = atoi(PQget(db_result, 0, "mykey")); 
  PQclear(db_result);

  /* Add the upload record to the folder */
  sprintf(sql, "INSERT INTO foldercontents (parent_fk,foldercontents_mode,child_id) VALUES ('1',2,'%d')", upload_pk);
  database_exec(scheduler, sql);
  
  /* Add the job info */
  sprintf(sql, "INSERT INTO job (job_user_fk,job_queued,job_priority,job_name,job_upload_fk) VALUES('1',now(),'0','testing file',%d)", upload_pk);
  database_exec(scheduler, sql);

  /* get job_pk of just added upload */
  sprintf(sql, "SELECT currval('job_job_pk_seq') as mykey FROM %s", "job");
  db_result = database_exec(scheduler, sql);
  job_pk = atoi(PQget(db_result, 0, "mykey"));
  PQclear(db_result);

  sprintf(sql, "INSERT INTO jobqueue (jq_job_fk,jq_type,jq_args,jq_runonpfile,jq_starttime,jq_endtime,jq_end_bits,jq_host) VALUES ('%d', 'ununpack', '%d', NULL, NULL, NULL, 0, NULL)", job_pk, upload_pk);
  database_exec(scheduler, sql);

  sprintf(sql, "SELECT currval('jobqueue_jq_pk_seq') as mykey FROM %s", "jobqueue");
  db_result = database_exec(scheduler, sql);
  jq_pk = atoi(PQget(db_result, 0, "mykey"));
  PQclear(db_result);
  return(jq_pk);
}