Skip to content

Commit

Permalink
Merge e972471 into 2c454f8
Browse files Browse the repository at this point in the history
  • Loading branch information
CyberROFL authored Mar 11, 2024
2 parents 2c454f8 + e972471 commit 6685f5b
Showing 1 changed file with 126 additions and 0 deletions.
126 changes: 126 additions & 0 deletions ydb/core/tx/replication/controller/dst_creator_ut.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,132 @@ Y_UNIT_TEST_SUITE(DstCreator) {
auto ev = env.GetRuntime().GrabEdgeEvent<TEvPrivate::TEvCreateDstResult>(env.GetSender());
UNIT_ASSERT_VALUES_EQUAL(ev->Get()->Status, NKikimrScheme::StatusSchemeError);
}

template <typename T>
void ExistingDst(NKikimrScheme::EStatus status, const TString& error, T&& mod, const TTestTableDescription& desc) {
auto changeName = [](const TTestTableDescription& desc, const TString& name) {
auto copy = desc;
copy.Name = name;
return copy;
};

TEnv env;
env.GetRuntime().SetLogPriority(NKikimrServices::REPLICATION_CONTROLLER, NLog::PRI_TRACE);

env.CreateTable("/Root", *MakeTableDescription(changeName(desc, "Src")));
env.CreateTable("/Root", *MakeTableDescription(mod(changeName(desc, "Dst"))));

env.GetRuntime().Register(CreateDstCreator(
env.GetSender(), env.GetSchemeshardId("/Root"), env.GetYdbProxy(), 1 /* rid */, 1 /* tid */,
TReplication::ETargetKind::Table, "/Root/Src", "/Root/Dst"
));

auto ev = env.GetRuntime().GrabEdgeEvent<TEvPrivate::TEvCreateDstResult>(env.GetSender());
UNIT_ASSERT_VALUES_EQUAL(ev->Get()->Status, status);
if (error) {
UNIT_ASSERT_STRING_CONTAINS(ev->Get()->Error, error);
}
}

Y_UNIT_TEST(ExistingDst) {
auto nop = [](const TTestTableDescription& desc) {
return desc;
};

ExistingDst(NKikimrScheme::StatusSuccess, "", nop, TTestTableDescription{
.Name = "Table",
.KeyColumns = {"key"},
.Columns = {
{.Name = "key", .Type = "Uint32"},
{.Name = "value", .Type = "Utf8"},
},
});
}

Y_UNIT_TEST(KeyColumnsSizeMismatch) {
auto addKeyColumn = [](const TTestTableDescription& desc) {
auto copy = desc;
copy.KeyColumns.push_back("value");
return copy;
};

ExistingDst(NKikimrScheme::StatusSchemeError, "Key columns size mismatch", addKeyColumn, TTestTableDescription{
.Name = "Table",
.KeyColumns = {"key"},
.Columns = {
{.Name = "key", .Type = "Uint32"},
{.Name = "value", .Type = "Utf8"},
},
});
}

Y_UNIT_TEST(KeyColumnNameMismatch) {
auto changeKeyColumn = [](const TTestTableDescription& desc) {
auto copy = desc;
copy.KeyColumns = {"value"};
return copy;
};

ExistingDst(NKikimrScheme::StatusSchemeError, "Key column name mismatch", changeKeyColumn, TTestTableDescription{
.Name = "Table",
.KeyColumns = {"key"},
.Columns = {
{.Name = "key", .Type = "Uint32"},
{.Name = "value", .Type = "Utf8"},
},
});
}

Y_UNIT_TEST(ColumnsSizeMismatch) {
auto addColumn = [](const TTestTableDescription& desc) {
auto copy = desc;
copy.Columns.push_back({.Name = "extra", .Type = "Utf8"});
return copy;
};

ExistingDst(NKikimrScheme::StatusSchemeError, "Columns size mismatch", addColumn, TTestTableDescription{
.Name = "Table",
.KeyColumns = {"key"},
.Columns = {
{.Name = "key", .Type = "Uint32"},
{.Name = "value", .Type = "Utf8"},
},
});
}

Y_UNIT_TEST(CannotFindColumn) {
auto changeColumnName = [](const TTestTableDescription& desc) {
auto copy = desc;
copy.Columns[1] = {.Name = "value2", .Type = "Utf8"};
return copy;
};

ExistingDst(NKikimrScheme::StatusSchemeError, "Cannot find column", changeColumnName, TTestTableDescription{
.Name = "Table",
.KeyColumns = {"key"},
.Columns = {
{.Name = "key", .Type = "Uint32"},
{.Name = "value", .Type = "Utf8"},
},
});
}

Y_UNIT_TEST(ColumnTypeMismatch) {
auto changeColumnType = [](const TTestTableDescription& desc) {
auto copy = desc;
copy.Columns[1] = {.Name = "value", .Type = "Uint32"};
return copy;
};

ExistingDst(NKikimrScheme::StatusSchemeError, "Column type mismatch", changeColumnType, TTestTableDescription{
.Name = "Table",
.KeyColumns = {"key"},
.Columns = {
{.Name = "key", .Type = "Uint32"},
{.Name = "value", .Type = "Utf8"},
},
});
}
}

}

0 comments on commit 6685f5b

Please sign in to comment.