TEST_F(ShardConnFixture, KilledGoodConnShouldNotClearPool) { ShardConnection conn1(TARGET_HOST, "test.user"); ShardConnection conn2(TARGET_HOST, "test.user"); ShardConnection conn3(TARGET_HOST, "test.user"); const uint64_t upperBoundCreationTime = conn3.get()->getSockCreationMicroSec(); conn3.done(); const uint64_t badCreationTime = conn1.get()->getSockCreationMicroSec(); conn1.kill(); conn2.done(); ShardConnection conn4(TARGET_HOST, "test.user"); ShardConnection conn5(TARGET_HOST, "test.user"); ASSERT_GREATER_THAN(conn4.get()->getSockCreationMicroSec(), badCreationTime); ASSERT_LESS_THAN_OR_EQUALS(conn4.get()->getSockCreationMicroSec(), upperBoundCreationTime); ASSERT_GREATER_THAN(conn5.get()->getSockCreationMicroSec(), badCreationTime); ASSERT_LESS_THAN_OR_EQUALS(conn5.get()->getSockCreationMicroSec(), upperBoundCreationTime); checkNewConns(assertGreaterThan, upperBoundCreationTime, 10); }
TEST(LockStats, Wait) { const ResourceId resId(RESOURCE_COLLECTION, std::string("LockStats.Wait")); resetGlobalLockStats(); LockerForTests locker(MODE_IX); locker.lock(resId, MODE_X); { // This will block LockerForTests lockerConflict(MODE_IX); ASSERT_EQUALS(LOCK_WAITING, lockerConflict.lockBegin(resId, MODE_S)); // Sleep 1 millisecond so the wait time passes ASSERT_EQUALS(LOCK_TIMEOUT, lockerConflict.lockComplete(resId, MODE_S, 1, false)); } // Make sure that the waits/blocks are non-zero SingleThreadedLockStats stats; reportGlobalLockingStats(&stats); ASSERT_EQUALS(1, stats.get(resId, MODE_X).numAcquisitions); ASSERT_EQUALS(0, stats.get(resId, MODE_X).numWaits); ASSERT_EQUALS(0, stats.get(resId, MODE_X).combinedWaitTimeMicros); ASSERT_EQUALS(1, stats.get(resId, MODE_S).numAcquisitions); ASSERT_EQUALS(1, stats.get(resId, MODE_S).numWaits); ASSERT_GREATER_THAN(stats.get(resId, MODE_S).combinedWaitTimeMicros, 0); }
void validate() { ASSERT_EQUALS(target.load(), unsigned(nthreads * iterations)); _AtomicUInt u; ASSERT_EQUALS(0u, u.load()); ASSERT_EQUALS(0u, u.fetchAndAdd(WordType(1))); ASSERT_EQUALS(2u, u.addAndFetch(WordType(1))); ASSERT_EQUALS(2u, u.fetchAndSubtract(WordType(1))); ASSERT_EQUALS(0u, u.subtractAndFetch(WordType(1))); ASSERT_EQUALS(0u, u.load()); u.fetchAndAdd(WordType(1)); ASSERT_GREATER_THAN(u.load(), WordType(0)); u.fetchAndSubtract(WordType(1)); ASSERT_NOT_GREATER_THAN(u.load(), WordType(0)); }
TEST(DBHelperTests, FindDiskLocsTooBig) { DBDirectClient client; OperationContextImpl txn; client.remove( ns, BSONObj() ); int numDocsInserted = 10; for ( int i = 0; i < numDocsInserted; ++i ) { client.insert( ns, BSON( "_id" << i ) ); } // Very small max size long long maxSizeBytes = 10; set<DiskLoc> locs; long long numDocsFound; long long estSizeBytes; { Lock::DBRead lk(txn.lockState(), ns); Client::Context ctx( ns ); KeyRange range( ns, BSON( "_id" << 0 ), BSON( "_id" << numDocsInserted ), BSON( "_id" << 1 ) ); Status result = Helpers::getLocsInRange( &txn, range, maxSizeBytes, &locs, &numDocsFound, &estSizeBytes ); // Make sure we get the right error code and our count and size estimates are valid ASSERT_EQUALS( result.code(), ErrorCodes::InvalidLength ); ASSERT_EQUALS( numDocsFound, numDocsInserted ); ASSERT_GREATER_THAN( estSizeBytes, maxSizeBytes ); } }
TEST(ProcessInfo, NonZeroPageSize) { if (ProcessInfo::blockCheckSupported()) { ASSERT_GREATER_THAN(ProcessInfo::getPageSize(), 0u); } }
static void assertGreaterThan(uint64_t a, uint64_t b) { ASSERT_GREATER_THAN(a, b); }
TEST(ProcessInfo, GetNumCoresReturnsNonZeroNumberOfProcessors) { ProcessInfo processInfo; ProcessInfo::initializeSystemInfo(); ASSERT_GREATER_THAN((int)processInfo.getNumCores(), 0); }