// ThreadCredential_t.cxx #include "dataset_util/ThreadCredential.h" #include #include using std::string; using std::cout; using std::endl; void msg(string txt) { cout << "--- "; cout << txt; cout << " ---" << endl; } string lookup(string credname) { return credname + "_owner"; } // Test classes. namespace dset { class GssCredentialManager { public: int set(string name) { ThreadCredential().names()[pthread_self()] = name; return 0; } }; class CredentialSelectionCatalog { public: int set() { return ThreadCredential().register_owner_locator(lookup); } }; } int ThreadCredential_t() { msg("No credentials."); cout << ThreadCredential() << endl; assert( ThreadCredential().name() == "" ); assert( ThreadCredential().owner() == "" ); msg("Set owner with no credentials."); string defown = "notme"; ThreadCredential().set_default_owner(defown); cout << ThreadCredential() << endl; assert( ThreadCredential().name() == "" ); assert( ThreadCredential().owner() == defown ); msg("Set credential"); string name = "mycred"; string owner = "mycred_owner"; assert( dset::GssCredentialManager().set(name) == 0 ); cout << ThreadCredential() << endl; assert( ThreadCredential().name() == name ); msg("Check owner"); assert( dset::CredentialSelectionCatalog().set() == 0 ); cout << ThreadCredential() << endl; assert( ThreadCredential().owner() == owner ); return 0; } #ifdef CTEST_MAIN int main() { return ThreadCredential_t(); } #endif