void VersionInfoInterface::appendBuildInfo(BSONObjBuilder* result) const { *result << "version" << version() << "gitVersion" << gitVersion() #if defined(_WIN32) << "targetMinOS" << targetMinOS() #endif << "modules" << modules() << "allocator" << allocator() << "javascriptEngine" << jsEngine() << "sysInfo" << "deprecated"; BSONArrayBuilder versionArray(result->subarrayStart("versionArray")); versionArray << majorVersion() << minorVersion() << patchVersion() << extraVersion(); versionArray.done(); BSONObjBuilder opensslInfo(result->subobjStart("openssl")); #ifdef MONGO_CONFIG_SSL #if MONGO_CONFIG_SSL_PROVIDER == MONGO_CONFIG_SSL_PROVIDER_OPENSSL opensslInfo << "running" << openSSLVersion() << "compiled" << OPENSSL_VERSION_TEXT; #elif MONGO_CONFIG_SSL_PROVIDER == MONGO_CONFIG_SSL_PROVIDER_WINDOWS opensslInfo << "running" << "Windows SChannel"; #elif MONGO_CONFIG_SSL_PROVIDER == MONGO_CONFIG_SSL_PROVIDER_APPLE opensslInfo << "running" << "Apple Secure Transport"; #else #error "Unknown SSL Provider" #endif // MONGO_CONFIG_SSL_PROVIDER #else opensslInfo << "running" << "disabled" << "compiled" << "disabled"; #endif opensslInfo.done(); BSONObjBuilder buildvarsInfo(result->subobjStart("buildEnvironment")); for (auto&& envDataEntry : buildInfo()) { if (std::get<2>(envDataEntry)) { buildvarsInfo << std::get<0>(envDataEntry) << std::get<1>(envDataEntry); } } buildvarsInfo.done(); *result << "bits" << (int)sizeof(void*) * 8; result->appendBool("debug", kDebugBuild); result->appendNumber("maxBsonObjectSize", BSONObjMaxUserSize); }
void run() { assert( _versionArray("1.2.3") == BSON_ARRAY(1 << 2 << 3 << 0) ); assert( _versionArray("1.2.0") == BSON_ARRAY(1 << 2 << 0 << 0) ); assert( _versionArray("2.0.0") == BSON_ARRAY(2 << 0 << 0 << 0) ); assert( _versionArray("1.2.3-pre-") == BSON_ARRAY(1 << 2 << 3 << -100) ); assert( _versionArray("1.2.0-pre-") == BSON_ARRAY(1 << 2 << 0 << -100) ); assert( _versionArray("2.0.0-pre-") == BSON_ARRAY(2 << 0 << 0 << -100) ); assert( _versionArray("1.2.3-rc0") == BSON_ARRAY(1 << 2 << 3 << -10) ); assert( _versionArray("1.2.0-rc1") == BSON_ARRAY(1 << 2 << 0 << -9) ); assert( _versionArray("2.0.0-rc2") == BSON_ARRAY(2 << 0 << 0 << -8) ); // Note that the pre of an rc is the same as the rc itself assert( _versionArray("1.2.3-rc3-pre-") == BSON_ARRAY(1 << 2 << 3 << -7) ); assert( _versionArray("1.2.0-rc4-pre-") == BSON_ARRAY(1 << 2 << 0 << -6) ); assert( _versionArray("2.0.0-rc5-pre-") == BSON_ARRAY(2 << 0 << 0 << -5) ); versionArray(); // make sure we work on current versionString log(1) << "versionArrayTest passed" << endl; }