summaryrefslogtreecommitdiffstats
path: root/config/src/tests/frt/frt.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'config/src/tests/frt/frt.cpp')
-rw-r--r--config/src/tests/frt/frt.cpp190
1 files changed, 11 insertions, 179 deletions
diff --git a/config/src/tests/frt/frt.cpp b/config/src/tests/frt/frt.cpp
index 1fe91af885b..5f4b7dee215 100644
--- a/config/src/tests/frt/frt.cpp
+++ b/config/src/tests/frt/frt.cpp
@@ -6,10 +6,6 @@
#include <vespa/config/common/configdefinition.h>
#include <vespa/config/frt/connection.h>
#include <vespa/config/frt/frtsource.h>
-#include <vespa/config/frt/frtconfigresponse.h>
-#include <vespa/config/frt/frtconfigrequest.h>
-#include <vespa/config/frt/frtconfigrequestv2.h>
-#include <vespa/config/frt/frtconfigresponsev2.h>
#include <vespa/config/frt/frtconfigrequestv3.h>
#include <vespa/config/frt/frtconfigresponsev3.h>
#include <vespa/vespalib/data/slime/slime.h>
@@ -232,107 +228,27 @@ namespace {
TEST_F("require that empty config response does not validate", RPCFixture()) {
- FRTConfigResponseV1 fail1(f1.createEmptyRequest());
+ FRTConfigResponseV3 fail1(f1.createEmptyRequest());
ASSERT_FALSE(fail1.validateResponse());
ASSERT_FALSE(fail1.hasValidResponse());
ASSERT_TRUE(fail1.isError());
}
TEST_F("require that response containing errors does not validate", RPCFixture()) {
- FRTConfigResponseV1 fail1(f1.createErrorRequest());
+ FRTConfigResponseV3 fail1(f1.createErrorRequest());
ASSERT_FALSE(fail1.validateResponse());
ASSERT_FALSE(fail1.hasValidResponse());
ASSERT_TRUE(fail1.isError());
ASSERT_TRUE(fail1.errorCode() != 0);
}
-TEST_F("require that valid response validates", RPCFixture()) {
- std::vector<vespalib::string> vec;
- vec.push_back("bar \"foo\"");
- FRTConfigResponseV1 ok(f1.createOKResponse("foo", "baz", "bim", "boo", 12, 15, vec, "mn"));
- ASSERT_TRUE(ok.validateResponse());
- ASSERT_TRUE(ok.hasValidResponse());
-}
-
TEST_F("require that response contains all values", RPCFixture()) {
- FRTConfigResponseV1 ok(f1.createOKResponse("foo", "baz", "bim", "boo", 12, 15));
+ FRTConfigResponseV3 ok(f1.createOKResponse("foo", "baz", "bim", "boo", 12, 15));
ASSERT_FALSE(ok.validateResponse());
ASSERT_FALSE(ok.hasValidResponse());
}
-TEST_F("require that valid response returns values after fill", RPCFixture()) {
- std::vector<vespalib::string> vec;
- vec.push_back("bar \"foo\"");
- FRTConfigResponseV1 ok(f1.createOKResponse("foo", "baz", "bim", "boo", 12, 15, vec, "mn"));
- ASSERT_TRUE(ok.validateResponse());
- ASSERT_TRUE(ok.hasValidResponse());
-
- // Should not be valid
- ASSERT_TRUE(ConfigKey() == ok.getKey());
- ASSERT_TRUE(ConfigValue() == ok.getValue());
-
- ok.fill();
- ConfigKey key(ok.getKey());
- ASSERT_EQUAL("foo", key.getDefName());
- ASSERT_EQUAL("baz", key.getDefMd5());
- ASSERT_EQUAL("bim", key.getConfigId());
- ASSERT_EQUAL("mn", key.getDefNamespace());
-
- ConfigValue value(ok.getValue());
- ASSERT_TRUE(vec == value.getLines());
-}
-
-TEST("require that request parameters are correctly initialized") {
- ConnectionMock conn;
- std::vector<vespalib::string> schema;
- schema.push_back("foo");
- schema.push_back("bar");
- ConfigKey key("foo", "bar", "bim", "boo", schema);
- FRTConfigRequestV1 frtReq(key, &conn, "mymd5", 1337, 8);
-
- FRT_RPCRequest * req = frtReq.getRequest();
- FRT_Values & params(*req->GetParams());
- ASSERT_EQUAL("bar", std::string(params[0]._string._str));
- ASSERT_EQUAL("", std::string(params[1]._string._str));
- ASSERT_EQUAL("boo", std::string(params[2]._string._str));
- ASSERT_EQUAL("foo", std::string(params[3]._string._str));
- ASSERT_EQUAL("mymd5", std::string(params[4]._string._str));
- ASSERT_EQUAL(1337u, params[5]._intval64);
- ASSERT_EQUAL(8u, params[6]._intval64);
- ASSERT_EQUAL("bim", std::string(params[7]._string._str));
- ASSERT_EQUAL(2u, params[8]._string_array._len);
- ASSERT_EQUAL("foo", std::string(params[8]._string_array._pt[0]._str));
- ASSERT_EQUAL("bar", std::string(params[8]._string_array._pt[1]._str));
- ASSERT_EQUAL(1u, params[9]._intval32);
-}
-
-TEST("require that request is aborted") {
- MyAbortHandler handler;
- ConnectionMock conn;
- ConfigKey key("foo", "bar", "bim", "boo");
- FRTConfigRequestV1 frtReq(key, &conn, "mymd5", 1337, 8);
- frtReq.getRequest()->SetAbortHandler(&handler);
- ASSERT_FALSE(frtReq.isAborted());
- ASSERT_TRUE(frtReq.abort());
-}
-
-TEST_FF("require that request is invoked", SourceFixture(),
- FRTFixture(f1))
-{
- f2.result.state = ConfigState("foo", 3);
- f2.src.getConfig();
- ASSERT_TRUE(f2.src.getCurrentRequest().verifyKey(f1.key));
- ASSERT_FALSE(f2.src.getCurrentRequest().verifyKey(ConfigKey("foo", "bal", "bim", "boo", std::vector<vespalib::string>())));
- ASSERT_FALSE(f2.src.getCurrentRequest().verifyState(ConfigState("foo", 0)));
- ASSERT_FALSE(f2.src.getCurrentRequest().verifyState(ConfigState("foo", 1)));
- ASSERT_FALSE(f2.src.getCurrentRequest().verifyState(ConfigState("bar", 1)));
- ASSERT_TRUE(f2.src.getCurrentRequest().verifyState(ConfigState("foo", 3)));
- ASSERT_TRUE(f2.result.notified);
- f2.src.close();
-}
-
-TEST_FF("require that request is config task is scheduled", SourceFixture(),
- FRTFixture(f1))
+TEST_FF("require that request is config task is scheduled", SourceFixture(), FRTFixture(f1))
{
f2.src.getConfig();
ASSERT_TRUE(f2.result.notified);
@@ -349,96 +265,6 @@ TEST_FF("require that request is config task is scheduled", SourceFixture(),
f2.src.close();
}
-TEST("require that v2 request is correctly initialized") {
- ConnectionMock conn;
- ConfigKey key = ConfigKey::create<MyConfig>("foobi");
- vespalib::string md5 = "mymd5";
- int64_t currentGeneration = 3;
- int64_t wantedGeneration = 4;
- vespalib::string hostName = "myhost";
- int64_t timeout = 3000;
- Trace traceIn(3);
- traceIn.trace(2, "Hei");
- FRTConfigRequestV2 v2req(&conn, key, md5, currentGeneration, wantedGeneration, hostName, timeout, traceIn);
- ConfigDefinition origDef(MyConfig::CONFIG_DEF_SCHEMA);
-
- FRT_RPCRequest * req = v2req.getRequest();
- ASSERT_TRUE(req != NULL);
- FRT_Values & params(*req->GetParams());
- std::string json(params[0]._string._str);
- Slime slime;
- JsonFormat::decode(Memory(json), slime);
- Inspector & root(slime.get());
- EXPECT_EQUAL(2, root[REQUEST_VERSION].asLong());
- EXPECT_EQUAL(key.getDefName(), root[REQUEST_DEF_NAME].asString().make_string());
- EXPECT_EQUAL(key.getDefNamespace(), root[REQUEST_DEF_NAMESPACE].asString().make_string());
- EXPECT_EQUAL(key.getDefMd5(), root[REQUEST_DEF_MD5].asString().make_string());
- EXPECT_EQUAL(key.getConfigId(), root[REQUEST_CLIENT_CONFIGID].asString().make_string());
- EXPECT_EQUAL(hostName, root[REQUEST_CLIENT_HOSTNAME].asString().make_string());
- EXPECT_EQUAL(currentGeneration, root[REQUEST_CURRENT_GENERATION].asLong());
- EXPECT_EQUAL(wantedGeneration, root[REQUEST_WANTED_GENERATION].asLong());
- EXPECT_EQUAL(md5, root[REQUEST_CONFIG_MD5].asString().make_string());
- EXPECT_EQUAL(timeout, root[REQUEST_TIMEOUT].asLong());
- Trace trace;
- trace.deserialize(root[REQUEST_TRACE]);
- EXPECT_TRUE(trace.shouldTrace(2));
- EXPECT_TRUE(trace.shouldTrace(3));
- EXPECT_FALSE(trace.shouldTrace(4));
- EXPECT_EQUAL(timeout, root[REQUEST_TIMEOUT].asLong());
- ConfigDefinition def;
- def.deserialize(root[REQUEST_DEF_CONTENT]);
- EXPECT_EQUAL(origDef.asString(), def.asString());
- ConfigResponse::UP response(v2req.createResponse(req));
- req->GetReturn()->AddString("foobar");
- EXPECT_TRUE(response->validateResponse());
-}
-
-TEST("require that v2 reponse is correctly initialized") {
- ConnectionMock conn;
- Slime slime;
- ConfigKey key = ConfigKey::create<MyConfig>("foobi");
- vespalib::string md5 = "mymd5";
- int64_t generation = 3;
- vespalib::string hostname = "myhhost";
- Trace traceIn(3);
- traceIn.trace(2, "Hei!");
- Cursor & root(slime.setObject());
- root.setLong(RESPONSE_VERSION, 2ul);
- root.setString(RESPONSE_DEF_NAME, Memory(key.getDefName()));
- root.setString(RESPONSE_DEF_NAMESPACE, Memory(key.getDefNamespace()));
- root.setString(RESPONSE_DEF_MD5, Memory(key.getDefMd5()));
- root.setString(RESPONSE_CONFIGID, Memory(key.getConfigId()));
- root.setString(RESPONSE_CLIENT_HOSTNAME, Memory(hostname));
- root.setString(RESPONSE_CONFIG_MD5, Memory(md5));
- root.setLong(RESPONSE_CONFIG_GENERATION, generation);
- traceIn.serialize(root.setObject(RESPONSE_TRACE));
- Cursor & payload(root.setObject(RESPONSE_PAYLOAD));
- payload.setString("myField", "foobiar");
- SimpleBuffer buf;
- JsonFormat::encode(slime, buf, true);
- FRT_RPCRequest * req = conn.allocRPCRequest();
- req->GetReturn()->AddString(buf.get().make_string().c_str());
- FRTConfigResponseV2 response(req);
- ASSERT_TRUE(response.validateResponse());
- response.fill();
- Trace trace(response.getTrace());
- EXPECT_TRUE(trace.shouldTrace(3));
- EXPECT_FALSE(trace.shouldTrace(4));
- ConfigKey responseKey(response.getKey());
- EXPECT_EQUAL(key.getDefName(), responseKey.getDefName());
- EXPECT_EQUAL(key.getDefNamespace(), responseKey.getDefNamespace());
- EXPECT_EQUAL(key.getDefMd5(), responseKey.getDefMd5());
- EXPECT_EQUAL(key.getConfigId(), responseKey.getConfigId());
- EXPECT_EQUAL(hostname, response.getHostName());
- ConfigState state(response.getConfigState());
- EXPECT_EQUAL(md5, state.md5);
- EXPECT_EQUAL(generation, state.generation);
- ConfigValue value(response.getValue());
- MyConfig::UP config(value.newInstance<MyConfig>());
- EXPECT_EQUAL("foobiar", config->myField);
- req->SubRef();
-}
-
TEST("require that v3 request is correctly initialized") {
ConnectionMock conn;
ConfigKey key = ConfigKey::create<MyConfig>("foobi");
@@ -449,7 +275,13 @@ TEST("require that v3 request is correctly initialized") {
int64_t timeout = 3000;
Trace traceIn(3);
traceIn.trace(2, "Hei");
- FRTConfigRequestV3 v3req(&conn, key, md5, currentGeneration, wantedGeneration, hostName, timeout, traceIn, VespaVersion::fromString("1.2.3"), CompressionType::LZ4);
+ FRTConfigRequestV3 v3req(&conn, key, md5, currentGeneration, wantedGeneration, hostName,
+ timeout, traceIn, VespaVersion::fromString("1.2.3"), CompressionType::LZ4);
+ ASSERT_TRUE(v3req.verifyState(ConfigState(md5, 3)));
+ ASSERT_FALSE(v3req.verifyState(ConfigState(md5, 2)));
+ ASSERT_FALSE(v3req.verifyState(ConfigState("xxx", 3)));
+ ASSERT_FALSE(v3req.verifyState(ConfigState("xxx", 2)));
+
ConfigDefinition origDef(MyConfig::CONFIG_DEF_SCHEMA);
FRT_RPCRequest * req = v3req.getRequest();