static void run_performance_tests (xmmsv_t *databases, xmmsv_t *testcases, gint format) { xmmsv_list_iter_t *it; xmmsv_get_list_iter (databases, &it); while (xmmsv_list_iter_valid (it)) { xmms_medialib_t *medialib; const gchar *filename; xmmsv_list_iter_entry_string (it, &filename); if (format == FORMAT_PRETTY) g_print ("Running suite with: %s\n", filename); xmms_ipc_init (); xmms_config_init ("memory://"); xmms_config_property_register ("medialib.path", filename, NULL, NULL); medialib = xmms_medialib_init (); if (medialib == NULL) { g_print ("Could not open database: %s (%d)\n", filename, s4_errno ()); exit (EXIT_FAILURE); } run_tests (medialib, testcases, run_performance_test, format, filename); xmms_object_unref (medialib); xmms_config_shutdown (); xmms_ipc_shutdown (); xmmsv_list_iter_next (it); } }
static s4_t * xmms_medialib_database_open (const gchar *database_name, const gchar *indices[]) { gint flags = 0; s4_t *s4; g_return_val_if_fail (database_name, NULL); if (strcmp (database_name, "memory://") == 0) { flags = S4_MEMORY; } s4 = s4_open (database_name, indices, flags); if (s4 != NULL) { return s4; } if (s4_errno () != S4E_MAGIC) { /* The database was a S4 database, but still couldn't be opened. */ xmms_log_fatal ("Could not open the S4 database"); } /* Seems like we've found a SQLite database, lets convert it. */ return xmms_medialib_database_convert (database_name, indices); }
static void _dead_thread_two (void) { s4_transaction_t *trans = s4_begin (s4, 0); CU_ASSERT_PTR_NOT_NULL (trans); g_usleep (G_USEC_PER_SEC / 2); CU_ASSERT_TRUE (s4_add (trans, "b", val, "a", val, "src")); g_usleep (G_USEC_PER_SEC); CU_ASSERT_FALSE (s4_add (trans, "a", val, "b", val, "src")); CU_ASSERT_FALSE (s4_commit (trans)); CU_ASSERT_EQUAL (s4_errno (), S4E_DEADLOCK); }