/* Copyright (c) 2008, 2023, Oracle and/or its affiliates.
This program is free software ; you can redistribute it and / or modify
it under the terms of the GNU General Public License , version 2 . 0 ,
as published by the Free Software Foundation .
This program is also distributed with certain software ( including
but not limited to OpenSSL ) that is licensed under separate terms ,
as designated in a particular file or component or in included license
documentation . The authors of MySQL hereby grant you an additional
permission to link the program and your derivative works with the
separately licensed software that they have included with MySQL .
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License , version 2 . 0 , for more details .
You should have received a copy of the GNU General Public License
along with this program ; if not , write to the Free Software Foundation ,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA */
#include <my_global.h>
#include <my_thread.h>
#include <string.h> // strncpy
#include <pfs_instr_class.h>
#include <pfs_instr.h>
#include <pfs_global.h>
#include <tap.h>
#include "stub_global_status_var.h"
void test_no_registration()
{
int rc;
PFS_sync_key key;
PFS_thread_key thread_key;
PFS_file_key file_key;
PFS_socket_key socket_key;
PFS_memory_key memory_key;
PFS_mutex_class *mutex;
PFS_rwlock_class *rwlock;
PFS_cond_class *cond;
PFS_thread_class *thread;
PFS_file_class *file;
PFS_socket_class *socket;
PFS_memory_class *memory;
/* PFS_table_share *table; */
rc= init_sync_class(0 , 0 , 0 );
ok(rc == 0 , "zero init (sync)" );
rc= init_thread_class(0 );
ok(rc == 0 , "zero init (thread)" );
rc= init_file_class(0 );
ok(rc == 0 , "zero init (file)" );
rc= init_socket_class(0 );
ok(rc == 0 , "zero init (socket)" );
rc= init_table_share(0 );
ok(rc == 0 , "zero init (table)" );
rc= init_memory_class(0 );
ok(rc == 0 , "zero init (memory)" );
key= register_mutex_class("FOO" , 3 , 0 );
ok(key == 0 , "no mutex registered" );
key= register_mutex_class("BAR" , 3 , 0 );
ok(key == 0 , "no mutex registered" );
key= register_mutex_class("FOO" , 3 , 0 );
ok(key == 0 , "no mutex registered" );
key= register_rwlock_class("FOO" , 3 , 0 );
ok(key == 0 , "no rwlock registered" );
key= register_rwlock_class("BAR" , 3 , 0 );
ok(key == 0 , "no rwlock registered" );
key= register_rwlock_class("FOO" , 3 , 0 );
ok(key == 0 , "no rwlock registered" );
key= register_cond_class("FOO" , 3 , 0 );
ok(key == 0 , "no cond registered" );
key= register_cond_class("BAR" , 3 , 0 );
ok(key == 0 , "no cond registered" );
key= register_cond_class("FOO" , 3 , 0 );
ok(key == 0 , "no cond registered" );
thread_key= register_thread_class("FOO" , 3 , 0 );
ok(thread_key == 0 , "no thread registered" );
thread_key= register_thread_class("BAR" , 3 , 0 );
ok(thread_key == 0 , "no thread registered" );
thread_key= register_thread_class("FOO" , 3 , 0 );
ok(thread_key == 0 , "no thread registered" );
file_key= register_file_class("FOO" , 3 , 0 );
ok(file_key == 0 , "no file registered" );
file_key= register_file_class("BAR" , 3 , 0 );
ok(file_key == 0 , "no file registered" );
file_key= register_file_class("FOO" , 3 , 0 );
ok(file_key == 0 , "no file registered" );
socket_key= register_socket_class("FOO" , 3 , 0 );
ok(socket_key == 0 , "no socket registered" );
socket_key= register_socket_class("BAR" , 3 , 0 );
ok(socket_key == 0 , "no socket registered" );
socket_key= register_socket_class("FOO" , 3 , 0 );
ok(socket_key == 0 , "no socket registered" );
memory_key= register_memory_class("FOO" , 3 , 0 );
ok(memory_key == 0 , "no memory registered" );
memory_key= register_memory_class("BAR" , 3 , 0 );
ok(memory_key == 0 , "no memory registered" );
memory_key= register_memory_class("FOO" , 3 , 0 );
ok(memory_key == 0 , "no memory registered" );
#ifdef LATER
PFS_thread fake_thread;
fake_thread.m_table_share_hash_pins= NULL;
table= find_or_create_table_share(& fake_thread, false , "foo_db" , 6 , "foo_table" , 9 );
ok(table == NULL, "not created" );
table= find_or_create_table_share(& fake_thread, false , "bar_db" , 6 , "bar_table" , 9 );
ok(table == NULL, "not created" );
table= find_or_create_table_share(& fake_thread, false , "foo_db" , 6 , "foo_table" , 9 );
ok(table == NULL, "not created" );
#endif
mutex= find_mutex_class(0 );
ok(mutex == NULL, "no mutex key 0" );
mutex= find_mutex_class(1 );
ok(mutex == NULL, "no mutex key 1" );
mutex= find_mutex_class(9999 );
ok(mutex == NULL, "no mutex key 9999" );
rwlock= find_rwlock_class(0 );
ok(rwlock == NULL, "no rwlock key 0" );
rwlock= find_rwlock_class(1 );
ok(rwlock == NULL, "no rwlock key 1" );
rwlock= find_rwlock_class(9999 );
ok(rwlock == NULL, "no rwlock key 9999" );
cond= find_cond_class(0 );
ok(cond == NULL, "no cond key 0" );
cond= find_cond_class(1 );
ok(cond == NULL, "no cond key 1" );
cond= find_cond_class(9999 );
ok(cond == NULL, "no cond key 9999" );
thread= find_thread_class(0 );
ok(thread == NULL, "no thread key 0" );
thread= find_thread_class(1 );
ok(thread == NULL, "no thread key 1" );
thread= find_thread_class(9999 );
ok(thread == NULL, "no thread key 9999" );
file= find_file_class(0 );
ok(file == NULL, "no file key 0" );
file= find_file_class(1 );
ok(file == NULL, "no file key 1" );
file= find_file_class(9999 );
ok(file == NULL, "no file key 9999" );
socket= find_socket_class(0 );
ok(socket == NULL, "no socket key 0" );
socket= find_socket_class(1 );
ok(socket == NULL, "no socket key 1" );
socket= find_socket_class(9999 );
ok(socket == NULL, "no socket key 9999" );
memory= find_memory_class(0 );
ok(memory == NULL, "no memory key 0" );
memory= find_memory_class(1 );
ok(memory == NULL, "no memory key 1" );
memory= find_memory_class(9999 );
ok(memory == NULL, "no memory key 9999" );
cleanup_sync_class();
cleanup_thread_class();
cleanup_file_class();
cleanup_socket_class();
cleanup_table_share();
cleanup_memory_class();
}
void test_mutex_registration()
{
int rc;
PFS_sync_key key;
PFS_mutex_class *mutex;
rc= init_sync_class(5 , 0 , 0 );
ok(rc == 0 , "room for 5 mutex" );
key= register_mutex_class("FOO" , 3 , 0 );
ok(key == 1 , "foo registered" );
key= register_mutex_class("BAR" , 3 , 0 );
ok(key == 2 , "bar registered" );
key= register_mutex_class("FOO" , 3 , 0 );
ok(key == 1 , "foo re registered" );
key= register_mutex_class("M-3" , 3 , 0 );
ok(key == 3 , "M-3 registered" );
key= register_mutex_class("M-4" , 3 , 0 );
ok(key == 4 , "M-4 registered" );
key= register_mutex_class("M-5" , 3 , 0 );
ok(key == 5 , "M-5 registered" );
ok(mutex_class_lost == 0 , "lost nothing" );
key= register_mutex_class("M-6" , 3 , 0 );
ok(key == 0 , "M-6 not registered" );
ok(mutex_class_lost == 1 , "lost 1 mutex" );
key= register_mutex_class("M-7" , 3 , 0 );
ok(key == 0 , "M-7 not registered" );
ok(mutex_class_lost == 2 , "lost 2 mutex" );
key= register_mutex_class("M-3" , 3 , 0 );
ok(key == 3 , "M-3 re registered" );
ok(mutex_class_lost == 2 , "lost 2 mutex" );
key= register_mutex_class("M-5" , 3 , 0 );
ok(key == 5 , "M-5 re registered" );
ok(mutex_class_lost == 2 , "lost 2 mutex" );
mutex= find_mutex_class(0 );
ok(mutex == NULL, "no key 0" );
mutex= find_mutex_class(3 );
ok(mutex != NULL, "found key 3" );
ok(strncmp(mutex->m_name, "M-3" , 3 ) == 0 , "key 3 is M-3" );
ok(mutex->m_name_length == 3 , "name length 3" );
mutex= find_mutex_class(9999 );
ok(mutex == NULL, "no key 9999" );
cleanup_sync_class();
}
void test_rwlock_registration()
{
int rc;
PFS_sync_key key;
PFS_rwlock_class *rwlock;
rc= init_sync_class(0 , 5 , 0 );
ok(rc == 0 , "room for 5 rwlock" );
key= register_rwlock_class("FOO" , 3 , 0 );
ok(key == 1 , "foo registered" );
key= register_rwlock_class("BAR" , 3 , 0 );
ok(key == 2 , "bar registered" );
key= register_rwlock_class("FOO" , 3 , 0 );
ok(key == 1 , "foo re registered" );
key= register_rwlock_class("RW-3" , 4 , 0 );
ok(key == 3 , "RW-3 registered" );
key= register_rwlock_class("RW-4" , 4 , 0 );
ok(key == 4 , "RW-4 registered" );
key= register_rwlock_class("RW-5" , 4 , 0 );
ok(key == 5 , "RW-5 registered" );
key= register_rwlock_class("RW-6" , 4 , 0 );
ok(key == 0 , "RW-6 not registered" );
key= register_rwlock_class("RW-7" , 4 , 0 );
ok(key == 0 , "RW-7 not registered" );
key= register_rwlock_class("RW-3" , 4 , 0 );
ok(key == 3 , "RW-3 re registered" );
key= register_rwlock_class("RW-5" , 4 , 0 );
ok(key == 5 , "RW-5 re registered" );
rwlock= find_rwlock_class(0 );
ok(rwlock == NULL, "no key 0" );
rwlock= find_rwlock_class(3 );
ok(rwlock != NULL, "found key 3" );
ok(strncmp(rwlock->m_name, "RW-3" , 4 ) == 0 , "key 3 is RW-3" );
ok(rwlock->m_name_length == 4 , "name length 4" );
rwlock= find_rwlock_class(9999 );
ok(rwlock == NULL, "no key 9999" );
cleanup_sync_class();
}
void test_cond_registration()
{
int rc;
PFS_sync_key key;
PFS_cond_class *cond;
rc= init_sync_class(0 , 0 , 5 );
ok(rc == 0 , "room for 5 cond" );
key= register_cond_class("FOO" , 3 , 0 );
ok(key == 1 , "foo registered" );
key= register_cond_class("BAR" , 3 , 0 );
ok(key == 2 , "bar registered" );
key= register_cond_class("FOO" , 3 , 0 );
ok(key == 1 , "foo re registered" );
key= register_cond_class("C-3" , 3 , 0 );
ok(key == 3 , "C-3 registered" );
key= register_cond_class("C-4" , 3 , 0 );
ok(key == 4 , "C-4 registered" );
key= register_cond_class("C-5" , 3 , 0 );
ok(key == 5 , "C-5 registered" );
key= register_cond_class("C-6" , 3 , 0 );
ok(key == 0 , "C-6 not registered" );
key= register_cond_class("C-7" , 3 , 0 );
ok(key == 0 , "C-7 not registered" );
key= register_cond_class("C-3" , 3 , 0 );
ok(key == 3 , "C-3 re registered" );
key= register_cond_class("C-5" , 3 , 0 );
ok(key == 5 , "C-5 re registered" );
cond= find_cond_class(0 );
ok(cond == NULL, "no key 0" );
cond= find_cond_class(3 );
ok(cond != NULL, "found key 3" );
ok(strncmp(cond->m_name, "C-3" , 3 ) == 0 , "key 3 is C-3" );
ok(cond->m_name_length == 3 , "name length 3" );
cond= find_cond_class(9999 );
ok(cond == NULL, "no key 9999" );
cleanup_sync_class();
}
void test_thread_registration()
{
int rc;
PFS_thread_key key;
PFS_thread_class *thread;
rc= init_thread_class(5 );
ok(rc == 0 , "room for 5 thread" );
key= register_thread_class("FOO" , 3 , 0 );
ok(key == 1 , "foo registered" );
key= register_thread_class("BAR" , 3 , 0 );
ok(key == 2 , "bar registered" );
key= register_thread_class("FOO" , 3 , 0 );
ok(key == 1 , "foo re registered" );
key= register_thread_class("Thread-3" , 8 , 0 );
ok(key == 3 , "Thread-3 registered" );
key= register_thread_class("Thread-4" , 8 , 0 );
ok(key == 4 , "Thread-4 registered" );
key= register_thread_class("Thread-5" , 8 , 0 );
ok(key == 5 , "Thread-5 registered" );
key= register_thread_class("Thread-6" , 8 , 0 );
ok(key == 0 , "Thread-6 not registered" );
key= register_thread_class("Thread-7" , 8 , 0 );
ok(key == 0 , "Thread-7 not registered" );
key= register_thread_class("Thread-3" , 8 , 0 );
ok(key == 3 , "Thread-3 re registered" );
key= register_thread_class("Thread-5" , 8 , 0 );
ok(key == 5 , "Thread-5 re registered" );
thread= find_thread_class(0 );
ok(thread == NULL, "no key 0" );
thread= find_thread_class(3 );
ok(thread != NULL, "found key 3" );
ok(strncmp(thread->m_name, "Thread-3" , 8 ) == 0 , "key 3 is Thread-3" );
ok(thread->m_name_length == 8 , "name length 8" );
thread= find_thread_class(9999 );
ok(thread == NULL, "no key 9999" );
cleanup_thread_class();
}
void test_file_registration()
{
int rc;
PFS_file_key key;
PFS_file_class *file;
rc= init_file_class(5 );
ok(rc == 0 , "room for 5 file" );
key= register_file_class("FOO" , 3 , 0 );
ok(key == 1 , "foo registered" );
key= register_file_class("BAR" , 3 , 0 );
ok(key == 2 , "bar registered" );
key= register_file_class("FOO" , 3 , 0 );
ok(key == 1 , "foo re registered" );
key= register_file_class("File-3" , 6 , 0 );
ok(key == 3 , "File-3 registered" );
key= register_file_class("File-4" , 6 , 0 );
ok(key == 4 , "File-4 registered" );
key= register_file_class("File-5" , 6 , 0 );
ok(key == 5 , "File-5 registered" );
key= register_file_class("File-6" , 6 , 0 );
ok(key == 0 , "File-6 not registered" );
key= register_file_class("File-7" , 6 , 0 );
ok(key == 0 , "File-7 not registered" );
key= register_file_class("File-3" , 6 , 0 );
ok(key == 3 , "File-3 re registered" );
key= register_file_class("File-5" , 6 , 0 );
ok(key == 5 , "File-5 re registered" );
file= find_file_class(0 );
ok(file == NULL, "no key 0" );
file= find_file_class(3 );
ok(file != NULL, "found key 3" );
ok(strncmp(file->m_name, "File-3" , 6 ) == 0 , "key 3 is File-3" );
ok(file->m_name_length == 6 , "name length 6" );
file= find_file_class(9999 );
ok(file == NULL, "no key 9999" );
cleanup_file_class();
}
void test_socket_registration()
{
int rc;
PFS_socket_key key;
PFS_socket_class *socket;
rc= init_socket_class(5 );
ok(rc == 0 , "room for 5 socket" );
key= register_socket_class("FOO" , 3 , 0 );
ok(key == 1 , "foo registered" );
key= register_socket_class("BAR" , 3 , 0 );
ok(key == 2 , "bar registered" );
key= register_socket_class("FOO" , 3 , 0 );
ok(key == 1 , "foo re registered" );
key= register_socket_class("Socket-3" , 8 , 0 );
ok(key == 3 , "Socket-3 registered" );
key= register_socket_class("Socket-4" , 8 , 0 );
ok(key == 4 , "Socket-4 registered" );
key= register_socket_class("Socket-5" , 8 , 0 );
ok(key == 5 , "Socket-5 registered" );
ok(socket_class_lost == 0 , "lost nothing" );
key= register_socket_class("Socket-6" , 8 , 0 );
ok(key == 0 , "Socket-6 not registered" );
ok(socket_class_lost == 1 , "lost 1 socket" );
key= register_socket_class("Socket-7" , 8 , 0 );
ok(key == 0 , "Socket-7 not registered" );
ok(socket_class_lost == 2 , "lost 2 socket" );
key= register_socket_class("Socket-3" , 8 , 0 );
ok(key == 3 , "Socket-3 re registered" );
ok(socket_class_lost == 2 , "lost 2 socket" );
key= register_socket_class("Socket-5" , 8 , 0 );
ok(key == 5 , "Socket-5 re registered" );
ok(socket_class_lost == 2 , "lost 2 socket" );
socket= find_socket_class(0 );
ok(socket == NULL, "no key 0" );
socket= find_socket_class(3 );
ok(socket != NULL, "found key 3" );
ok(strncmp(socket->m_name, "Socket-3" , 8 ) == 0 , "key 3 is Socket-3" );
ok(socket->m_name_length == 8 , "name length 3" );
socket= find_socket_class(9999 );
ok(socket == NULL, "no key 9999" );
cleanup_socket_class();
}
void test_table_registration()
{
#ifdef LATER
PFS_table_share *table_share;
PFS_table_share *table_share_2;
PFS_thread fake_thread;
fake_thread.m_table_share_hash_pins= NULL;
table_share_lost= 0 ;
table_share= find_or_create_table_share(& fake_thread, false , "db1" , 3 , "t1" , 2 );
ok(table_share == NULL, "not created" );
ok(table_share_lost == 1 , "lost the table" );
table_share_lost= 0 ;
init_table_share(5 );
init_table_share_hash();
table_share= find_or_create_table_share(& fake_thread, false , "db1" , 3 , "t1" , 2 );
ok(table_share != NULL, "created db1.t1" );
ok(table_share_lost == 0 , "not lost" );
table_share_2= find_or_create_table_share(& fake_thread, false , "db1" , 3 , "t1" , 2 );
ok(table_share_2 != NULL, "found db1.t1" );
ok(table_share_lost == 0 , "not lost" );
ok(table_share == table_share_2, "same table" );
table_share_2= find_or_create_table_share(& fake_thread, false , "db1" , 3 , "t2" , 2 );
ok(table_share_2 != NULL, "created db1.t2" );
ok(table_share_lost == 0 , "not lost" );
table_share_2= find_or_create_table_share(& fake_thread, false , "db2" , 3 , "t1" , 2 );
ok(table_share_2 != NULL, "created db2.t1" );
ok(table_share_lost == 0 , "not lost" );
table_share_2= find_or_create_table_share(& fake_thread, false , "db2" , 3 , "t2" , 2 );
ok(table_share_2 != NULL, "created db2.t2" );
ok(table_share_lost == 0 , "not lost" );
table_share_2= find_or_create_table_share(& fake_thread, false , "db3" , 3 , "t3" , 2 );
ok(table_share_2 != NULL, "created db3.t3" );
ok(table_share_lost == 0 , "not lost" );
table_share_2= find_or_create_table_share(& fake_thread, false , "db4" , 3 , "t4" , 2 );
ok(table_share_2 == NULL, "lost db4.t4" );
ok(table_share_lost == 1 , "lost" );
table_share_lost= 0 ;
table_share_2= find_or_create_table_share(& fake_thread, false , "db1" , 3 , "t2" , 2 );
ok(table_share_2 != NULL, "found db1.t2" );
ok(table_share_lost == 0 , "not lost" );
ok(strncmp(table_share_2->m_schema_name, "db1" , 3 ) == 0 , "schema db1" );
ok(table_share_2->m_schema_name_length == 3 , "length 3" );
ok(strncmp(table_share_2->m_table_name, "t2" , 2 ) == 0 , "table t2" );
ok(table_share_2->m_table_name_length == 2 , "length 2" );
cleanup_table_share_hash();
cleanup_table_share();
#endif
}
void test_memory_registration()
{
int rc;
PFS_memory_key key;
PFS_memory_class *memory;
rc= init_memory_class(5 );
ok(rc == 0 , "room for 5 memory" );
key= register_memory_class("FOO" , 3 , 0 );
ok(key == 1 , "foo registered" );
key= register_memory_class("BAR" , 3 , 0 );
ok(key == 2 , "bar registered" );
key= register_memory_class("FOO" , 3 , 0 );
ok(key == 1 , "foo re registered" );
key= register_memory_class("Memory-3" , 8 , 0 );
ok(key == 3 , "Memory-3 registered" );
key= register_memory_class("Memory-4" , 8 , 0 );
ok(key == 4 , "Memory-4 registered" );
key= register_memory_class("Memory-5" , 8 , 0 );
ok(key == 5 , "Memory-5 registered" );
ok(memory_class_lost == 0 , "lost nothing" );
key= register_memory_class("Memory-6" , 8 , 0 );
ok(key == 0 , "Memory-6 not registered" );
ok(memory_class_lost == 1 , "lost 1 memory" );
key= register_memory_class("Memory-7" , 8 , 0 );
ok(key == 0 , "Memory-7 not registered" );
ok(memory_class_lost == 2 , "lost 2 memory" );
key= register_memory_class("Memory-3" , 8 , 0 );
ok(key == 3 , "Memory-3 re registered" );
ok(memory_class_lost == 2 , "lost 2 memory" );
key= register_memory_class("Memory-5" , 8 , 0 );
ok(key == 5 , "Memory-5 re registered" );
ok(memory_class_lost == 2 , "lost 2 memory" );
memory= find_memory_class(0 );
ok(memory == NULL, "no key 0" );
memory= find_memory_class(3 );
ok(memory != NULL, "found key 3" );
ok(strncmp(memory->m_name, "Memory-3" , 8 ) == 0 , "key 3 is Memory-3" );
ok(memory->m_name_length == 8 , "name length 3" );
memory= find_memory_class(9999 );
ok(memory == NULL, "no key 9999" );
cleanup_memory_class();
}
#ifdef LATER
void set_wait_stat(PFS_instr_class *klass)
{
PFS_single_stat *stat;
stat= & global_instr_class_waits_array[klass->m_event_name_index];
stat->m_count= 12 ;
stat->m_min= 5 ;
stat->m_max= 120 ;
stat->m_sum= 999 ;
}
bool is_empty_stat(PFS_instr_class *klass)
{
PFS_single_stat *stat;
stat= & global_instr_class_waits_array[klass->m_event_name_index];
if (stat->m_count != 0 )
return false ;
if (stat->m_min != (ulonglong) -1 )
return false ;
if (stat->m_max != 0 )
return false ;
if (stat->m_sum != 0 )
return false ;
return true ;
}
#endif
void test_instruments_reset()
{
int rc;
PFS_sync_key key;
PFS_file_key file_key;
PFS_socket_key socket_key;
PFS_mutex_class *mutex_1;
PFS_mutex_class *mutex_2;
PFS_mutex_class *mutex_3;
PFS_rwlock_class *rwlock_1;
PFS_rwlock_class *rwlock_2;
PFS_rwlock_class *rwlock_3;
PFS_cond_class *cond_1;
PFS_cond_class *cond_2;
PFS_cond_class *cond_3;
PFS_file_class *file_1;
PFS_file_class *file_2;
PFS_file_class *file_3;
PFS_socket_class *socket_1;
PFS_socket_class *socket_2;
PFS_socket_class *socket_3;
rc= init_sync_class(3 , 3 , 3 );
ok(rc == 0 , "init (sync)" );
rc= init_thread_class(3 );
ok(rc == 0 , "init (thread)" );
rc= init_file_class(3 );
ok(rc == 0 , "init (file)" );
rc= init_socket_class(3 );
ok(rc == 0 , "init (socket)" );
key= register_mutex_class("M-1" , 3 , 0 );
ok(key == 1 , "mutex registered" );
key= register_mutex_class("M-2" , 3 , 0 );
ok(key == 2 , "mutex registered" );
key= register_mutex_class("M-3" , 3 , 0 );
ok(key == 3 , "mutex registered" );
key= register_rwlock_class("RW-1" , 4 , 0 );
ok(key == 1 , "rwlock registered" );
key= register_rwlock_class("RW-2" , 4 , 0 );
ok(key == 2 , "rwlock registered" );
key= register_rwlock_class("RW-3" , 4 , 0 );
ok(key == 3 , "rwlock registered" );
key= register_cond_class("C-1" , 3 , 0 );
ok(key == 1 , "cond registered" );
key= register_cond_class("C-2" , 3 , 0 );
ok(key == 2 , "cond registered" );
key= register_cond_class("C-3" , 3 , 0 );
ok(key == 3 , "cond registered" );
file_key= register_file_class("F-1" , 3 , 0 );
ok(file_key == 1 , "file registered" );
file_key= register_file_class("F-2" , 3 , 0 );
ok(file_key == 2 , "file registered" );
file_key= register_file_class("F-3" , 3 , 0 );
ok(file_key == 3 , "file registered" );
socket_key= register_socket_class("S-1" , 3 , 0 );
ok(socket_key == 1 , "socket registered" );
socket_key= register_socket_class("S-2" , 3 , 0 );
ok(socket_key == 2 , "socket registered" );
socket_key= register_socket_class("S-3" , 3 , 0 );
ok(socket_key == 3 , "socket registered" );
mutex_1= find_mutex_class(1 );
ok(mutex_1 != NULL, "mutex key 1" );
mutex_2= find_mutex_class(2 );
ok(mutex_2 != NULL, "mutex key 2" );
mutex_3= find_mutex_class(3 );
ok(mutex_3 != NULL, "mutex key 3" );
rwlock_1= find_rwlock_class(1 );
ok(rwlock_1 != NULL, "rwlock key 1" );
rwlock_2= find_rwlock_class(2 );
ok(rwlock_2 != NULL, "rwlock key 2" );
rwlock_3= find_rwlock_class(3 );
ok(rwlock_3 != NULL, "rwlock key 3" );
cond_1= find_cond_class(1 );
ok(cond_1 != NULL, "cond key 1" );
cond_2= find_cond_class(2 );
ok(cond_2 != NULL, "cond key 2" );
cond_3= find_cond_class(3 );
ok(cond_3 != NULL, "cond key 3" );
file_1= find_file_class(1 );
ok(file_1 != NULL, "file key 1" );
file_2= find_file_class(2 );
ok(file_2 != NULL, "file key 2" );
file_3= find_file_class(3 );
ok(file_3 != NULL, "file key 3" );
socket_1= find_socket_class(1 );
ok(socket_1 != NULL, "socket key 1" );
socket_2= find_socket_class(2 );
ok(socket_2 != NULL, "socket key 2" );
socket_3= find_socket_class(3 );
ok(socket_3 != NULL, "socket key 3" );
#ifdef LATER
set_wait_stat(mutex_1);
set_wait_stat(mutex_2);
set_wait_stat(mutex_3);
set_wait_stat(rwlock_1);
set_wait_stat(rwlock_2);
set_wait_stat(rwlock_3);
set_wait_stat(cond_1);
set_wait_stat(cond_2);
set_wait_stat(cond_3);
set_wait_stat(file_1);
set_wait_stat(file_2);
set_wait_stat(file_3);
ok(! is_empty_stat(mutex_1), "mutex_1 stat is populated" );
ok(! is_empty_stat(mutex_2), "mutex_2 stat is populated" );
ok(! is_empty_stat(mutex_3), "mutex_3 stat is populated" );
ok(! is_empty_stat(rwlock_1), "rwlock_1 stat is populated" );
ok(! is_empty_stat(rwlock_2), "rwlock_2 stat is populated" );
ok(! is_empty_stat(rwlock_3), "rwlock_3 stat is populated" );
ok(! is_empty_stat(cond_1), "cond_1 stat is populated" );
ok(! is_empty_stat(cond_2), "cond_2 stat is populated" );
ok(! is_empty_stat(cond_3), "cond_3 stat is populated" );
ok(! is_empty_stat(file_1), "file_1 stat is populated" );
ok(! is_empty_stat(file_2), "file_2 stat is populated" );
ok(! is_empty_stat(file_3), "file_3 stat is populated" );
reset_global_wait_stat();
ok(is_empty_stat(mutex_1), "mutex_1 stat is cleared" );
ok(is_empty_stat(mutex_2), "mutex_2 stat is cleared" );
ok(is_empty_stat(mutex_3), "mutex_3 stat is cleared" );
ok(is_empty_stat(rwlock_1), "rwlock_1 stat is cleared" );
ok(is_empty_stat(rwlock_2), "rwlock_2 stat is cleared" );
ok(is_empty_stat(rwlock_3), "rwlock_3 stat is cleared" );
ok(is_empty_stat(cond_1), "cond_1 stat is cleared" );
ok(is_empty_stat(cond_2), "cond_2 stat is cleared" );
ok(is_empty_stat(cond_3), "cond_3 stat is cleared" );
ok(is_empty_stat(file_1), "file_1 stat is cleared" );
ok(is_empty_stat(file_2), "file_2 stat is cleared" );
ok(is_empty_stat(file_3), "file_3 stat is cleared" );
#endif
cleanup_sync_class();
cleanup_file_class();
cleanup_socket_class();
}
void do_all_tests()
{
test_no_registration();
test_mutex_registration();
test_rwlock_registration();
test_cond_registration();
test_thread_registration();
test_file_registration();
test_socket_registration();
test_table_registration();
test_memory_registration();
test_instruments_reset();
}
int main(int argc, char **argv)
{
plan(209 );
pfs_enabled= 1 ;
MY_INIT(argv[0 ]);
do_all_tests();
my_end(0 );
return (exit_status());
}
Messung V0.5 in Prozent C=100 H=100 G=100
¤ Dauer der Verarbeitung: 0.13 Sekunden
(vorverarbeitet am 2026-10-08)
¤
*© Formatika GbR, Deutschland