Skip to content

Commit

Permalink
Test & fix
Browse files Browse the repository at this point in the history
  • Loading branch information
CyberROFL committed Jul 1, 2024
1 parent 58b1598 commit e8e84d9
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 3 deletions.
31 changes: 31 additions & 0 deletions ydb/core/kqp/ut/scheme/kqp_scheme_ut.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5485,7 +5485,10 @@ Y_UNIT_TEST_SUITE(KqpScheme) {
}

Y_UNIT_TEST(CreateAsyncReplicationWithSecret) {
using namespace NReplication;

TKikimrRunner kikimr("root@builtin");
auto repl = TReplicationClient(kikimr.GetDriver(), TCommonClientSettings().Database("/Root"));
auto db = kikimr.GetTableClient();
auto session = db.CreateSession().GetValueSync().GetSession();

Expand Down Expand Up @@ -5529,6 +5532,34 @@ Y_UNIT_TEST_SUITE(KqpScheme) {

Sleep(TDuration::Seconds(1));
}

while (true) {
auto settings = TDescribeReplicationSettings().IncludeStats(true);
const auto result = repl.DescribeReplication("/Root/replication", settings).ExtractValueSync();
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());

const auto& desc = result.GetReplicationDescription();
UNIT_ASSERT_VALUES_EQUAL(desc.GetState(), TReplicationDescription::EState::Running);

const auto& total = desc.GetRunningState().GetStats();
if (!total.GetInitialScanProgress() || *total.GetInitialScanProgress() < 100) {
Sleep(TDuration::Seconds(1));
continue;
}

UNIT_ASSERT(total.GetInitialScanProgress());
UNIT_ASSERT_DOUBLES_EQUAL(*total.GetInitialScanProgress(), 100.0, 0.01);

const auto& items = desc.GetItems();
UNIT_ASSERT_VALUES_EQUAL(items.size(), 1);
const auto& item = items.at(0).Stats;

UNIT_ASSERT(item.GetInitialScanProgress());
UNIT_ASSERT_DOUBLES_EQUAL(*item.GetInitialScanProgress(), *total.GetInitialScanProgress(), 0.01);

// TODO: check lag too
break;
}
}

Y_UNIT_TEST(AlterAsyncReplication) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ class TTargetDescriber: public TActorBootstrapped<TTargetDescriber> {
void Handle(TEvYdbProxy::TEvDescribeTableResponse::TPtr& ev) {
LOG_T("Handle " << ev->Get()->ToString());

if (Targets.contains(ev->Cookie)) {
if (!Targets.contains(ev->Cookie)) {
LOG_W("Unknown describe response"
<< ": cookie# " << ev->Cookie);
return;
Expand Down Expand Up @@ -184,6 +184,7 @@ class TController::TTxDescribeReplication: public TTxBase {
}

bool DescribeReplication(TReplication::TPtr replication) {
Result = MakeHolder<TEvController::TEvDescribeReplicationResult>();
Result->Record.SetStatus(NKikimrReplication::TEvDescribeReplicationResult::SUCCESS);
Result->Record.MutableConnectionParams()->CopyFrom(replication->GetConfig().GetSrcConnectionParams());

Expand Down
13 changes: 11 additions & 2 deletions ydb/public/lib/ydb_cli/commands/ydb_service_scheme.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -411,6 +411,15 @@ static TString ValueOr(const std::optional<T>& value, const U& orValue) {
}
}

template <typename U>
static TString ProgressOr(const std::optional<float>& value, const U& orValue) {
if (value) {
return TStringBuilder() << FloatToString(*value, PREC_POINT_DIGITS, 2) << "%";
} else {
return TStringBuilder() << orValue;
}
}

int TCommandDescribe::PrintReplicationResponsePretty(const NYdb::NReplication::TDescribeReplicationResult& result) const {
const auto& desc = result.GetReplicationDescription();

Expand All @@ -420,7 +429,7 @@ int TCommandDescribe::PrintReplicationResponsePretty(const NYdb::NReplication::T
if (ShowStats) {
const auto& stats = desc.GetRunningState().GetStats();
Cout << Endl << "Lag: " << ValueOr(stats.GetLag(), "n/a");
Cout << Endl << "Initial Scan progress: " << ValueOr(stats.GetInitialScanProgress(), "n/a");
Cout << Endl << "Initial Scan progress: " << ProgressOr(stats.GetInitialScanProgress(), "n/a");
}
break;
case NReplication::TReplicationDescription::EState::Error:
Expand Down Expand Up @@ -461,7 +470,7 @@ int TCommandDescribe::PrintReplicationResponsePretty(const NYdb::NReplication::T
if (ShowStats) {
row
.Column(4, ValueOr(item.Stats.GetLag(), "n/a"))
.Column(5, ValueOr(item.Stats.GetInitialScanProgress(), "n/a"));
.Column(5, ProgressOr(item.Stats.GetInitialScanProgress(), "n/a"));
}
}
Cout << Endl << "Items:" << Endl << table;
Expand Down

0 comments on commit e8e84d9

Please sign in to comment.