diff --git a/common/cpp/include/common/data_structs.h b/common/cpp/include/common/data_structs.h index c0065769e47ea3e08a9d4e84164e6e6e44a0438f..1337b7e311c0394ce1416440e26cbc6b59c1218c 100644 --- a/common/cpp/include/common/data_structs.h +++ b/common/cpp/include/common/data_structs.h @@ -15,6 +15,8 @@ class FileInfo { std::chrono::system_clock::time_point modify_date; uint64_t size{0}; uint64_t id{0}; + std::string source; + uint64_t buf_id{0}; std::string Json() const; bool SetFromJson(const std::string& json_string); std::string FullName(const std::string& base_path); diff --git a/common/cpp/src/data_structs/data_structs.cpp b/common/cpp/src/data_structs/data_structs.cpp index 52846d05b4f7da31863c63b787f5d6b4c82b252e..323d1d6afc71adb320b7fef19a62cbd219be1980 100644 --- a/common/cpp/src/data_structs/data_structs.cpp +++ b/common/cpp/src/data_structs/data_structs.cpp @@ -2,20 +2,25 @@ #include "json_parser/json_parser.h" +#include <iostream> + namespace asapo { std::string FileInfo::Json() const { auto nanoseconds_from_epoch = std::chrono::time_point_cast<std::chrono::nanoseconds>(modify_date). time_since_epoch().count(); + int64_t buf_id_int = static_cast<int64_t>(buf_id); std::string s = "{\"_id\":" + std::to_string(id) + "," "\"size\":" + std::to_string(size) + "," "\"name\":\"" + name + "\"," - "\"lastchange\":" + std::to_string(nanoseconds_from_epoch) + "}"; + "\"lastchange\":" + std::to_string(nanoseconds_from_epoch) + "," + "\"source\":\"" + source + "\"," + "\"buf_id\":" + std::to_string(buf_id_int) + + "}"; return s; } - bool TimeFromJson(const JsonStringParser& parser, const std::string name, std::chrono::system_clock::time_point* val) { uint64_t nanoseconds_from_epoch; if (parser.GetUInt64(name, &nanoseconds_from_epoch)) { @@ -39,6 +44,8 @@ bool FileInfo::SetFromJson(const std::string& json_string) { if (parser.GetUInt64("_id", &id) || parser.GetUInt64("size", &size) || parser.GetString("name", &name) || + parser.GetString("source", &source) || + parser.GetUInt64("buf_id", &buf_id) || !TimeFromJson(parser, "lastchange", &modify_date)) { *this = old; return false; diff --git a/common/cpp/src/database/mongodb_client.cpp b/common/cpp/src/database/mongodb_client.cpp index 6bd22a3f7501f2c9340e40f09787007e8444db63..69d0290c70c4eff2034dfb965395544de9e04ee4 100644 --- a/common/cpp/src/database/mongodb_client.cpp +++ b/common/cpp/src/database/mongodb_client.cpp @@ -93,11 +93,12 @@ void MongoDBClient::CleanUp() { } bson_p PrepareBsonDocument(const FileInfo& file, Error* err) { + bson_error_t mongo_err; auto s = file.Json(); auto json = reinterpret_cast<const uint8_t*>(s.c_str()); - auto bson = bson_new_from_json(json, -1, nullptr); + auto bson = bson_new_from_json(json, -1, &mongo_err); if (!bson) { - *err = TextError(DBError::kInsertError); + *err = TextError(std::string(DBError::kInsertError) + ": " + mongo_err.message); return nullptr; } diff --git a/common/cpp/src/json_parser/rapid_json.cpp b/common/cpp/src/json_parser/rapid_json.cpp index 31fcd58424b7eb29e80262398695d1431651ef13..84eab91f1aa50b053052de2fedb0a954859a1cb7 100644 --- a/common/cpp/src/json_parser/rapid_json.cpp +++ b/common/cpp/src/json_parser/rapid_json.cpp @@ -3,13 +3,15 @@ using namespace rapidjson; +#include <iostream> + namespace asapo { -RapidJson::RapidJson(const std::string& json, const std::unique_ptr<IO>* io): io__{io}, json_{json} { +RapidJson::RapidJson(const std::string& json, const std::unique_ptr<IO>* io) : io__{io}, json_{json} { } -Error RapidJson::LazyInitialize()const noexcept { +Error RapidJson::LazyInitialize() const noexcept { if (embedded_error_) { return TextError(embedded_error_->Explain()); } @@ -26,7 +28,7 @@ Error RapidJson::LazyInitialize()const noexcept { } } - if ( doc_.Parse(str.c_str()).HasParseError()) { + if (doc_.Parse(str.c_str()).HasParseError()) { return TextError("Cannot parse document"); } @@ -46,6 +48,9 @@ asapo::Error RapidJson::CheckValueType(const std::string& name, ValueType type, res = val->IsString(); break; case ValueType::kUint64: + res = val->IsUint64(); + break; + case ValueType::kInt64: res = val->IsInt64(); break; case ValueType::kBool: @@ -62,27 +67,46 @@ asapo::Error RapidJson::CheckValueType(const std::string& name, ValueType type, return nullptr; } - -asapo::Error RapidJson::GetValuePointer(const std::string& name, ValueType type, Value** val)const noexcept { +asapo::Error RapidJson::GetValuePointer(const std::string& name, ValueType type, Value** val) const noexcept { if (Error err = LazyInitialize()) { return err; } auto iterator = object_p_->FindMember(name.c_str()); if (iterator == object_p_->MemberEnd()) { - return TextError("cannot find: " + name); + return TextError("cannot find: " + name); } - *val = &iterator->value; + *val = &iterator->value; return CheckValueType(name, type, *val); } +Error RapidJson::GetInt64(const std::string& name, int64_t* val) const noexcept { + Value* json_val; + if (Error err = GetValuePointer(name, ValueType::kInt64, &json_val)) { + return err; + } + *val = json_val->GetInt64(); + return nullptr; +} + Error RapidJson::GetUInt64(const std::string& name, uint64_t* val) const noexcept { + int64_t val_int64; + + Error err = GetInt64(name, &val_int64); + if (!initialized_) { + return err; + } + if (err == nullptr) { + *val = static_cast<uint64_t>(val_int64); + return nullptr; + } + Value* json_val; if (Error err = GetValuePointer(name, ValueType::kUint64, &json_val)) { return err; } - *val = json_val->GetInt64(); + *val = json_val->GetUint64(); return nullptr; } @@ -104,7 +128,6 @@ Error RapidJson::GetString(const std::string& name, std::string* val) const noex return nullptr; } - Error RapidJson::GetArrayUInt64(const std::string& name, std::vector<uint64_t>* val) const noexcept { Value* json_val; if (Error err = GetValuePointer(name, ValueType::kArray, &json_val)) { @@ -113,10 +136,10 @@ Error RapidJson::GetArrayUInt64(const std::string& name, std::vector<uint64_t>* val->clear(); for (auto& v : json_val->GetArray()) { - if (!v.IsInt64()) { + if (!v.IsUint64()) { return TextError("wrong type of array element: " + name); } - val->push_back(v.GetInt()); + val->push_back(v.GetUint64()); } return nullptr; @@ -148,5 +171,4 @@ RapidJson::RapidJson(const RapidJson& parent, const std::string& subname) { initialized_ = true; } - } \ No newline at end of file diff --git a/common/cpp/src/json_parser/rapid_json.h b/common/cpp/src/json_parser/rapid_json.h index ca0c0b054ae31b9d0444f0d20c29ceb3cbe743c9..9098f7cd5562c7b3e303194744425ebf1194da7f 100644 --- a/common/cpp/src/json_parser/rapid_json.h +++ b/common/cpp/src/json_parser/rapid_json.h @@ -10,6 +10,7 @@ namespace asapo { enum class ValueType { kUint64, + kInt64, kString, kObject, kArray, @@ -26,6 +27,7 @@ class RapidJson { Error GetArrayUInt64(const std::string& name, std::vector<uint64_t>* val) const noexcept; Error GetArrayString(const std::string& name, std::vector<std::string>* val) const noexcept; private: + Error GetInt64(const std::string& name, int64_t* val) const noexcept; const std::unique_ptr<IO>* io__; mutable rapidjson::Document doc_; mutable rapidjson::Value object_; diff --git a/common/cpp/unittests/data_structs/test_data_structs.cpp b/common/cpp/unittests/data_structs/test_data_structs.cpp index 01d282ae7a20d4b46cee8ee307ce27244c470250..dbd401a692bef49f15a82d5870449351b88589b5 100644 --- a/common/cpp/unittests/data_structs/test_data_structs.cpp +++ b/common/cpp/unittests/data_structs/test_data_structs.cpp @@ -20,20 +20,34 @@ using ::testing::SetArgPointee; namespace { +uint64_t big_uint = 18446744073709551615ull; +int64_t big_int = -9223372036854775807ll - 1; + FileInfo PrepareFileInfo() { FileInfo finfo; finfo.size = 100; finfo.id = 1; finfo.name = "name"; + finfo.source = "host:1234"; + finfo.buf_id = big_uint; finfo.modify_date = std::chrono::time_point<std::chrono::system_clock>(std::chrono::milliseconds(1)); return finfo; } +TEST(FileInFo, Defaults) { + FileInfo finfo; + + ASSERT_THAT(finfo.buf_id, Eq(0)); + ASSERT_THAT(finfo.id, Eq(0)); +} + + TEST(FileInFo, CorrectConvertToJson) { auto finfo = PrepareFileInfo(); std::string json = finfo.Json(); + ASSERT_THAT(json, Eq( - R"({"_id":1,"size":100,"name":"name","lastchange":1000000})")); + R"({"_id":1,"size":100,"name":"name","lastchange":1000000,"source":"host:1234","buf_id":-1})")); } TEST(FileInFo, CorrectConvertFromJsonReturnsError) { @@ -57,11 +71,15 @@ TEST(FileInFo, CorrectConvertFromJson) { FileInfo result; auto ok = result.SetFromJson(json); + + ASSERT_THAT(ok, Eq(true)); + ASSERT_THAT(result.id, Eq(finfo.id)); ASSERT_THAT(result.name, Eq(finfo.name)); ASSERT_THAT(result.size, Eq(finfo.size)); ASSERT_THAT(result.modify_date, Eq(finfo.modify_date)); - ASSERT_THAT(ok, Eq(true)); + ASSERT_THAT(result.buf_id, Eq(finfo.buf_id)); + ASSERT_THAT(result.source, Eq(finfo.source)); } diff --git a/examples/producer/dummy-data-producer/dummy_data_producer.cpp b/examples/producer/dummy-data-producer/dummy_data_producer.cpp index 80b010f4c242bf0fd14a3906e3e127e3a082c1d2..b19f9c02910f384e4e3bf28f1c3c80894776eb66 100644 --- a/examples/producer/dummy-data-producer/dummy_data_producer.cpp +++ b/examples/producer/dummy-data-producer/dummy_data_producer.cpp @@ -118,7 +118,7 @@ void WaitThreadsFinished(const Args& args) { std::this_thread::sleep_for(std::chrono::milliseconds(100)); elapsed_ms += 100; if (elapsed_ms > args.timeout_sec * 1000) { - std::cerr << "Exit on timeout " << std::endl; + std::cerr << "Producer exit on timeout " << std::endl; exit(EXIT_FAILURE); } } diff --git a/examples/worker/getnext_broker/check_linux.sh b/examples/worker/getnext_broker/check_linux.sh index 04ee45752f3f75bc95434575d6a680f8cb1346f9..2c320e1589f11c4dacddbce2a21155f9ca9ff52f 100644 --- a/examples/worker/getnext_broker/check_linux.sh +++ b/examples/worker/getnext_broker/check_linux.sh @@ -21,7 +21,7 @@ nomad run broker.nmd for i in `seq 1 3`; do - echo 'db.data.insert({"_id":'$i',"size":100,"name":"'$i'","lastchange":1})' | mongo ${database_name} + echo 'db.data.insert({"_id":'$i',"size":100,"name":"'$i'","lastchange":1,"source":"none","buf_id":0})' | mongo ${database_name} done sleep 1 diff --git a/examples/worker/getnext_broker/check_windows.bat b/examples/worker/getnext_broker/check_windows.bat index 1e678d49985463eca3cc2da2d15988f514084beb..2039fa28f4a77cebac6351f26236211002cdb6cb 100644 --- a/examples/worker/getnext_broker/check_windows.bat +++ b/examples/worker/getnext_broker/check_windows.bat @@ -8,7 +8,7 @@ c:\opt\consul\nomad run nginx.nmd ping 1.0.0.0 -n 10 -w 100 > nul -for /l %%x in (1, 1, 3) do echo db.data.insert({"_id":%%x,"size":100,"name":"%%x","lastchange":1}) | %mongo_exe% %database_name% || goto :error +for /l %%x in (1, 1, 3) do echo db.data.insert({"_id":%%x,"size":100,"name":"%%x","lastchange":1,"source":"none","buf_id":0}) | %mongo_exe% %database_name% || goto :error "%1" 127.0.0.1:8400 %database_name% 1 %token_test_run% 1000 | findstr /c:"Processed 3 file" || goto :error diff --git a/receiver/src/request.cpp b/receiver/src/request.cpp index 26f6e72759efe91b474eb3a1d0145ada66ca5806..8c1e97a7790b6f0d460067c76291c0f74ca58716 100644 --- a/receiver/src/request.cpp +++ b/receiver/src/request.cpp @@ -118,7 +118,7 @@ void Request::SetBeamline(std::string beamline) { const std::string& Request::GetBeamline() const { return beamline_; } -uint64_t Request::GetSlotId() { +uint64_t Request::GetSlotId() const { return slot_id_; } diff --git a/receiver/src/request.h b/receiver/src/request.h index f58b84c95e96b524514a4bd23f0570cf439d3190..4df6aaf537197363f1974042239b6aa48ff94a69 100644 --- a/receiver/src/request.h +++ b/receiver/src/request.h @@ -41,7 +41,7 @@ class Request { VIRTUAL const std::string& GetBeamline() const; std::unique_ptr<IO> io__; DataCache* cache__ = nullptr; - VIRTUAL uint64_t GetSlotId(); + VIRTUAL uint64_t GetSlotId() const; private: Error PrepareDataBuffer(); Error ReceiveData(); diff --git a/receiver/src/request_handler_db_write.cpp b/receiver/src/request_handler_db_write.cpp index 16282e81d245cff151d632459bce0c35df5e714d..728768b4846aeae6ea985d387c814c6a96274fb4 100644 --- a/receiver/src/request_handler_db_write.cpp +++ b/receiver/src/request_handler_db_write.cpp @@ -7,6 +7,15 @@ namespace asapo { +template<typename ... Args> +std::string string_format( const std::string& format, Args ... args ) { + size_t size = snprintf( nullptr, 0, format.c_str(), args ... ) + 1; + std::unique_ptr<char[]> buf( new char[ size ] ); + snprintf( buf.get(), size, format.c_str(), args ... ); + return std::string( buf.get(), buf.get() + size - 1 ); +} + + Error RequestHandlerDbWrite::ProcessRequest(Request* request) const { if (db_name_.empty()) { db_name_ = request->GetBeamtimeId(); @@ -16,18 +25,8 @@ Error RequestHandlerDbWrite::ProcessRequest(Request* request) const { return err; } - FileInfo file_info; - file_info.name = request->GetFileName(); - file_info.size = request->GetDataSize(); - file_info.id = request->GetDataID(); - Error err; - err = db_client__->Insert(file_info, true); - if (!err) { - log__->Debug(std::string{"insert record id "} + std::to_string(file_info.id) + " to " + kDBCollectionName + " in " + - db_name_ + - " at " + GetReceiverConfig()->broker_db_uri); - } - return err; + return InsertRecordToDb(request); + } RequestHandlerDbWrite::RequestHandlerDbWrite(): log__{GetDefaultReceiverLogger()} { @@ -52,4 +51,25 @@ Error RequestHandlerDbWrite::ConnectToDbIfNeeded() const { return nullptr; } +Error RequestHandlerDbWrite::InsertRecordToDb(const Request* request) const { + auto file_info = PrepareFileInfo(request); + auto err = db_client__->Insert(file_info, true); + if (!err) { + log__->Debug(std::string{"insert record id "} + std::to_string(file_info.id) + " to " + kDBCollectionName + " in " + + db_name_ + + " at " + GetReceiverConfig()->broker_db_uri); + } + return err; +} + +FileInfo RequestHandlerDbWrite::PrepareFileInfo(const Request* request) const { + FileInfo file_info; + file_info.name = request->GetFileName(); + file_info.size = request->GetDataSize(); + file_info.id = request->GetDataID(); + file_info.buf_id = request->GetSlotId(); + file_info.source = GetReceiverConfig()->source_host + ":" + string_format("%ld", GetReceiverConfig()->listen_port); + return file_info; +} + } diff --git a/receiver/src/request_handler_db_write.h b/receiver/src/request_handler_db_write.h index ec5d53ee440a4ea38dd8b0901bf6ffa89f25e9f3..de3bcaa76bcde633888edbcbcee85eae6b475f74 100644 --- a/receiver/src/request_handler_db_write.h +++ b/receiver/src/request_handler_db_write.h @@ -16,7 +16,9 @@ class RequestHandlerDbWrite final: public RequestHandler { Error ProcessRequest(Request* request) const override; std::unique_ptr<Database> db_client__; const AbstractLogger* log__; - private: + private: + FileInfo PrepareFileInfo(const Request* request) const; + Error InsertRecordToDb(const Request* request) const; Error ConnectToDbIfNeeded() const; mutable bool connected_to_db = false; mutable std::string db_name_; diff --git a/receiver/unittests/mock_receiver_config.cpp b/receiver/unittests/mock_receiver_config.cpp index cac36c7b48893e551e04f0d6c91da12e7a566a3a..8e03129c2a4a13a6c959175e110701004acfdbe2 100644 --- a/receiver/unittests/mock_receiver_config.cpp +++ b/receiver/unittests/mock_receiver_config.cpp @@ -68,16 +68,16 @@ Error SetReceiverConfig (const ReceiverConfig& config, std::string error_field) if (error_field == "SourceHost") { EXPECT_CALL(mock_io, GetHostName_t(_)). - WillOnce( + WillOnce( DoAll(SetArgPointee<0>(asapo::IOErrorTemplates::kUnknownIOError.Generate().release()), Return("") - )); - } else if (error_field == "none"){ + )); + } else if (error_field == "none") { EXPECT_CALL(mock_io, GetHostName_t(_)). - WillOnce( + WillOnce( DoAll(SetArgPointee<0>(nullptr), Return(config.source_host) - )); + )); } auto err = config_factory.SetConfig("fname"); diff --git a/receiver/unittests/receiver_mocking.h b/receiver/unittests/receiver_mocking.h index 4d44e8206ee6f1af4d99556d023b5505cbe7a14c..851152d0c7633c927be349bb53f4d99c01afcf31 100644 --- a/receiver/unittests/receiver_mocking.h +++ b/receiver/unittests/receiver_mocking.h @@ -52,6 +52,7 @@ class MockRequest: public Request { MOCK_CONST_METHOD0(GetFileName, std::string()); MOCK_CONST_METHOD0(GetDataSize, uint64_t()); MOCK_CONST_METHOD0(GetDataID, uint64_t()); + MOCK_CONST_METHOD0(GetSlotId, uint64_t()); MOCK_CONST_METHOD0(GetData, void* ()); MOCK_CONST_METHOD0(GetBeamtimeId, const std::string & ()); MOCK_CONST_METHOD0(GetBeamline, const std::string & ()); diff --git a/receiver/unittests/test_request_handler_db_writer.cpp b/receiver/unittests/test_request_handler_db_writer.cpp index b9bb149a6590027e81e898e97128498967ac6e59..870c1e7577226f6b915bc744d913b18d87a13497 100644 --- a/receiver/unittests/test_request_handler_db_writer.cpp +++ b/receiver/unittests/test_request_handler_db_writer.cpp @@ -61,6 +61,8 @@ class DbWriterHandlerTests : public Test { ReceiverConfig config; std::string expected_beamtime_id = "beamtime_id"; std::string expected_hostname = "host"; + uint64_t expected_port = 1234; + uint64_t expected_buf_id = 18446744073709551615ull; void SetUp() override { GenericRequestHeader request_header; request_header.data_id = 2; @@ -127,6 +129,8 @@ TEST_F(DbWriterHandlerTests, ProcessRequestDoesNotCallConnectSecondTime) { MATCHER_P(CompareFileInfo, file, "") { if (arg.size != file.size) return false; + if (arg.source != file.source) return false; + if (arg.buf_id != file.buf_id) return false; if (arg.name != file.name) return false; if (arg.id != file.id) return false; @@ -136,12 +140,20 @@ MATCHER_P(CompareFileInfo, file, "") { TEST_F(DbWriterHandlerTests, CallsInsert) { config.broker_db_uri = "127.0.0.1:27017"; + config.source_host = expected_hostname; + config.listen_port = expected_port; + SetReceiverConfig(config, "none"); EXPECT_CALL(*mock_request, GetBeamtimeId()) .WillOnce(ReturnRef(expected_beamtime_id)) ; + EXPECT_CALL(*mock_request, GetSlotId()) + .WillOnce(Return(expected_buf_id)) + ; + + EXPECT_CALL(mock_db, Connect_t(config.broker_db_uri, expected_beamtime_id, asapo::kDBCollectionName)). WillOnce(testing::Return(nullptr)); @@ -164,6 +176,8 @@ TEST_F(DbWriterHandlerTests, CallsInsert) { file_info.size = expected_file_size; file_info.name = expected_file_name; file_info.id = expected_id; + file_info.buf_id = expected_buf_id; + file_info.source = expected_hostname + ":" + std::to_string(expected_port); EXPECT_CALL(mock_db, Insert_t(CompareFileInfo(file_info), _)). diff --git a/tests/automatic/full_chain/two_beamlines/check_linux.sh b/tests/automatic/full_chain/two_beamlines/check_linux.sh index abd0a8d6b0088a1361f55cba7fb3bbb8eb14d142..6906672ee78fc57f610521e30bdb67ad8db1de57 100644 --- a/tests/automatic/full_chain/two_beamlines/check_linux.sh +++ b/tests/automatic/full_chain/two_beamlines/check_linux.sh @@ -53,5 +53,5 @@ $1 localhost:8400 ${beamtime_id2} 100 900 4 0 100 & #producerid=`echo $!` -$2 ${proxy_address} ${beamtime_id1} 2 $token1 1000 | tee /dev/stderr | grep "Processed 1000 file(s)" -$2 ${proxy_address} ${beamtime_id2} 2 $token2 1000 | tee /dev/stderr | grep "Processed 900 file(s)" +$2 ${proxy_address} ${beamtime_id1} 2 $token1 5000 | tee /dev/stderr | grep "Processed 1000 file(s)" +$2 ${proxy_address} ${beamtime_id2} 2 $token2 5000 | tee /dev/stderr | grep "Processed 900 file(s)" diff --git a/tests/automatic/mongo_db/insert/insert_mongodb.cpp b/tests/automatic/mongo_db/insert/insert_mongodb.cpp index 67cbc520c0adebce55309b84516c747f7a9bfa1a..5922fb935b01732fe4d0cef6557b5ad2b5c26cb0 100644 --- a/tests/automatic/mongo_db/insert/insert_mongodb.cpp +++ b/tests/automatic/mongo_db/insert/insert_mongodb.cpp @@ -42,6 +42,8 @@ int main(int argc, char* argv[]) { fi.name = "relpath/1"; fi.id = args.file_id; fi.modify_date = std::chrono::system_clock::now(); + fi.buf_id = 18446744073709551615ull; + fi.source = "host:1234"; if (args.keyword != "Notconnected") { db.Connect("127.0.0.1", "data", "test"); diff --git a/tests/automatic/worker/next_multithread_broker/check_linux.sh b/tests/automatic/worker/next_multithread_broker/check_linux.sh index 308bd1ff6292bd29c86ee6e772f0a66a3e59d0e7..1c312f0615fee651b2cca6cb894f3c72a4125835 100644 --- a/tests/automatic/worker/next_multithread_broker/check_linux.sh +++ b/tests/automatic/worker/next_multithread_broker/check_linux.sh @@ -24,7 +24,7 @@ sleep 1 for i in `seq 1 10`; do - echo 'db.data.insert({"_id":'$i',"size":100,"name":"'$i'","lastchange":1})' | mongo ${database_name} + echo 'db.data.insert({"_id":'$i',"size":100,"name":"'$i'","lastchange":1,"source":"none","buf_id":0})' | mongo ${database_name} done $@ 127.0.0.1:8400 $database_name 4 10 $token_test_run diff --git a/tests/automatic/worker/next_multithread_broker/check_windows.bat b/tests/automatic/worker/next_multithread_broker/check_windows.bat index 1a5d84ae4b0a135898a378226673c0f2a258d39b..07ab0e1f50792b6dbebe8794d9206363ab807600 100644 --- a/tests/automatic/worker/next_multithread_broker/check_windows.bat +++ b/tests/automatic/worker/next_multithread_broker/check_windows.bat @@ -10,7 +10,7 @@ c:\opt\consul\nomad run nginx.nmd ping 1.0.0.0 -n 10 -w 100 > nul -for /l %%x in (1, 1, 10) do echo db.data.insert({"_id":%%x,"size":100,"name":"%%x","lastchange":1}) | %mongo_exe% %database_name% || goto :error +for /l %%x in (1, 1, 10) do echo db.data.insert({"_id":%%x,"size":100,"name":"%%x","lastchange":1,"source":"none","buf_id":0}) | %mongo_exe% %database_name% || goto :error %1 127.0.0.1:8400 %database_name% 4 10 %token_test_run% || goto :error