Skip to content

Conversation

@avanthakkar
Copy link
Contributor

@avanthakkar avanthakkar commented Dec 4, 2023

Fixes: https://tracker.ceph.com/issues/63849
Signed-off-by: avanthakkar avanjohn@gmail.com

Contribution Guidelines

  • To sign and title your commits, please refer to Submitting Patches to Ceph.

  • If you are submitting a fix for a stable branch (e.g. "quincy"), please refer to Submitting Patches to Ceph - Backports for the proper workflow.

  • When filling out the below checklist, you may click boxes directly in the GitHub web UI. When entering or editing the entire PR message in the GitHub web UI editor, you may also select a checklist item by adding an x between the brackets: [x]. Spaces and capitalization matter when checking off items this way.

Checklist

  • Tracker (select at least one)
    • References tracker ticket
    • Very recent bug; references commit where it was introduced
    • New feature (ticket optional)
    • Doc update (no ticket needed)
    • Code cleanup (no ticket needed)
  • Component impact
    • Affects Dashboard, opened tracker ticket
    • Affects Orchestrator, opened tracker ticket
    • No impact that needs to be tracked
  • Documentation (select at least one)
    • Updates relevant documentation
    • No doc update is appropriate
  • Tests (select at least one)
Show available Jenkins commands
  • jenkins retest this please
  • jenkins test classic perf
  • jenkins test crimson perf
  • jenkins test signed
  • jenkins test make check
  • jenkins test make check arm64
  • jenkins test submodules
  • jenkins test dashboard
  • jenkins test dashboard cephadm
  • jenkins test api
  • jenkins test docs
  • jenkins render docs
  • jenkins test ceph-volume all
  • jenkins test ceph-volume tox
  • jenkins test windows
  • jenkins test rook e2e

@github-actions github-actions bot added the tests label Dec 4, 2023
@avanthakkar avanthakkar force-pushed the exporter-unit-tests branch 2 times, most recently from 4b63659 to 165f04e Compare December 4, 2023 17:35
@avanthakkar
Copy link
Contributor Author

jenkins test make check

@avanthakkar avanthakkar requested a review from jmolmo December 18, 2023 10:37
@avanthakkar avanthakkar marked this pull request as ready for review December 18, 2023 10:38
@avanthakkar avanthakkar requested a review from idryomov December 18, 2023 10:39
@avanthakkar avanthakkar force-pushed the exporter-unit-tests branch 2 times, most recently from e6b722c to 594d012 Compare December 18, 2023 10:46
@avanthakkar avanthakkar changed the title exporter: Enhance unit-tests coverage for exporter exporter: enhance unit-tests coverage for exporter Dec 18, 2023
@jmolmo jmolmo requested a review from pereman2 December 22, 2023 12:15
Comment on lines 94 to 97
bool sort;
sort = sort_metrics ? true : g_conf().get_val<bool>("exporter_sort_metrics");
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is a lot of ternary operations for these things. Why not just extract get_val from this function and move it to request_loop so we don't have this many ternaries.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've done this to make it easier for unit tests as well as they call this function for exporting metrics.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I understand what you did there. I'm just saying that since we are using parameters for dump_asok_metrics, might be worth to move generation of those parameters out of it so that the logic is not too hacky.

}

TEST(Exporter, add_fixed_name_metrics) {
std::string metric_name = "ceph_data_sync_from_zone2-zg1-realm1_fetch_bytes";
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we have more test cases?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will add a couple more

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've added a few more for metrics name used in RGW grafana dashboards

@avanthakkar
Copy link
Contributor Author

jenkins test make check

@avanthakkar avanthakkar requested a review from pereman2 January 8, 2024 23:44
Comment on lines 1423 to 1461
std::string metric_name = "ceph_data_sync_from_zone2-zg1-realm1_fetch_bytes";

DaemonMetricCollector &collector = collector_instance();
std::pair<labels_t, std::string> new_metric = collector.add_fixed_name_metrics(metric_name);
labels_t expected_labels = {{"source_zone", "\"zone2-zg1-realm1\""}};
std::string expected_metric_name = "ceph_data_sync_from_zone_fetch_bytes";
EXPECT_EQ(new_metric.first, expected_labels);
ASSERT_TRUE(new_metric.second == expected_metric_name);

// Test 2
metric_name = "ceph_data_sync_from_zone2-zg1-realm1_fetch_bytes_sum";
new_metric = collector.add_fixed_name_metrics(metric_name);
expected_labels = {{"source_zone", "\"zone2-zg1-realm1\""}};
expected_metric_name = "ceph_data_sync_from_zone_fetch_bytes_sum";
EXPECT_EQ(new_metric.first, expected_labels);
ASSERT_TRUE(new_metric.second == expected_metric_name);

// Test 3
metric_name = "ceph_data_sync_from_zone2-zg1-realm1_poll_latency_sum";
new_metric = collector.add_fixed_name_metrics(metric_name);
expected_labels = {{"source_zone", "\"zone2-zg1-realm1\""}};
expected_metric_name = "ceph_data_sync_from_zone_poll_latency_sum";
EXPECT_EQ(new_metric.first, expected_labels);
ASSERT_TRUE(new_metric.second == expected_metric_name);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
std::string metric_name = "ceph_data_sync_from_zone2-zg1-realm1_fetch_bytes";
DaemonMetricCollector &collector = collector_instance();
std::pair<labels_t, std::string> new_metric = collector.add_fixed_name_metrics(metric_name);
labels_t expected_labels = {{"source_zone", "\"zone2-zg1-realm1\""}};
std::string expected_metric_name = "ceph_data_sync_from_zone_fetch_bytes";
EXPECT_EQ(new_metric.first, expected_labels);
ASSERT_TRUE(new_metric.second == expected_metric_name);
// Test 2
metric_name = "ceph_data_sync_from_zone2-zg1-realm1_fetch_bytes_sum";
new_metric = collector.add_fixed_name_metrics(metric_name);
expected_labels = {{"source_zone", "\"zone2-zg1-realm1\""}};
expected_metric_name = "ceph_data_sync_from_zone_fetch_bytes_sum";
EXPECT_EQ(new_metric.first, expected_labels);
ASSERT_TRUE(new_metric.second == expected_metric_name);
// Test 3
metric_name = "ceph_data_sync_from_zone2-zg1-realm1_poll_latency_sum";
new_metric = collector.add_fixed_name_metrics(metric_name);
expected_labels = {{"source_zone", "\"zone2-zg1-realm1\""}};
expected_metric_name = "ceph_data_sync_from_zone_poll_latency_sum";
EXPECT_EQ(new_metric.first, expected_labels);
ASSERT_TRUE(new_metric.second == expected_metric_name);
std::vector<string> metrics = {
"ceph_data_sync_from_zone2-zg1-realm1_fetch_bytes",
"ceph_data_sync_from_zone2-zg1-realm1_fetch_bytes_sum",
"ceph_data_sync_from_zone2-zg1-realm1_poll_latency_sum",
}
std::string metric_name = "ceph_data_sync_from_zone2-zg1-realm1_fetch_bytes";
for (string &metric_name : metrics) {
DaemonMetricCollector &collector = collector_instance();
std::pair<labels_t, std::string> new_metric = collector.add_fixed_name_metrics(metric_name);
labels_t expected_labels = {{"source_zone", "\"zone2-zg1-realm1\""}};
std::string expected_metric_name = "ceph_data_sync_from_zone_fetch_bytes";
EXPECT_EQ(new_metric.first, expected_labels);
ASSERT_TRUE(new_metric.second == expected_metric_name);
}

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will update thanks!

Comment on lines 36 to 38
std::string dump_response;
std::string schema_response;
dump_asok_metrics(false, -1, true, dump_response, schema_response, true);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is pretty hacky and where it would be worth to move dump_response and schema_response generation.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Where you suggest to move it to?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

dump_asok pseudo code looks something like:

for (daemon in daemons) {
  ping
  get_dump_response
  get_schema_response
  get_config_show
  // do stuff
}

Then for each daemon iteration you have 4 variables that can be exchanged for that. Even with that in a testing phase all daemons will have same inputs which is not ok but whatever, works for this tests now.

I propose to change dump_asok_metrics a extrat the loop so that you have

for (daemon in daemons) {
  ping
  get_dump_response
  get_schema_response
  get_config_show
  parse_daemon_metrics(&dump, &schema, &config);
}

so that in the test you can call parse_daemon_metrics that is what you care about, pinging is not a input this way, you remove unnecessary branches checking if this method is running in "test" mode or "normal" mode.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is good your idea @pereman2 - Even i think that probably "parse_daemon_metrics" must be a class for example, "generic_metrics_parser".
As we have "special" parsing needs depending of the daemon, probably to have inherited classes for these daemons, for example "rgw_metrics_parser" could also simplify and make more consistent the code.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@pereman2 @jmolmo I think this is addressed now given we have parse_asok_metrics introduced from #55773 already & also I'm now simp,y using the config values for sort_metrics & prio_limit . PTAL & lmk if anything more needs to be addressed.

@avanthakkar
Copy link
Contributor Author

jenkins test make check

Copy link
Member

@jmolmo jmolmo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please test and move the test for "add_fixed_name_metrics" to the PR where the modifications in the function are set.
I think that for the rest , probably we will need to agree a refactor in code and tests.

ASSERT_TRUE(collector.metrics.find(expectedMetrics) != std::string::npos);
}

TEST(Exporter, add_fixed_name_metrics) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add_fixed_named_metrics is private

}

TEST(Exporter, add_fixed_name_metrics) {
std::vector<string> metrics = {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

using a tuple can simplify the test:

TEST(Exporter, add_fixed_name_metrics) {
    // test metrics are {metric_name_coming_from_rgw, rgw_zone, metric_name_output}
    std::vector<std::tuple<std::string, std::string, std::string>> metrics {
      {"ceph_data_sync_from_zone2-zg1-realm1_fetch_bytes", "zone2-zg1-realm1", "ceph_data_sync_from_zone_fetch_bytes"},
      {"ceph_data_sync_from_zone2-zg1-realm1_fetch_bytes_sum", "zone2-zg1-realm1", "ceph_data_sync_from_zone_fetch_bytes_sum"},
      {"ceph_data_sync_from_zone2-zg1-realm1_poll_latency_sum", "zone2-zg1-realm1", "ceph_data_sync_from_zone_poll_latency_sum"},
      {"ceph_data_sync_from_zone2_fetch_bytes_count","zone2", "ceph_data_sync_from_zone_fetch_bytes"},
      {"ceph_data_sync_from_zone2_with_underscore_fetch_bytes_count","zone2_with_underscore", "ceph_data_sync_from_zone_fetch_bytes_count"},
    };
    DaemonMetricCollector &collector = collector_instance();
    for (auto& test_metric : metrics) {
      std::pair<labels_t, std::string> new_metric = collector.add_fixed_name_metrics(std::get<0>(test_metric));
      labels_t expected_labels = {{"source_zone", std::get<1>(test_metric)}};
      std::string expected_metric_name = std::get<2>(test_metric);
      EXPECT_EQ(new_metric.first, expected_labels);
      ASSERT_TRUE(new_metric.second == expected_metric_name);
    }
}

@avanthakkar
Copy link
Contributor Author

Please test and move the test for "add_fixed_name_metrics" to the PR where the modifications in the function are set. I think that for the rest , probably we will need to agree a refactor in code and tests.

I've already established a setup for unit tests here, and there are additional modifications needed for the DaemonMetricCollector. I would prefer to incorporate any necessary unit tests into this existing PR

@avanthakkar avanthakkar force-pushed the exporter-unit-tests branch from a444e36 to cfd0c18 Compare April 12, 2024 09:12
Copy link
Contributor

@pereman2 pereman2 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/home/jenkins-build/build/workspace/ceph-pull-requests/src/test/exporter/test_exporter.cc:1423:17: error: unknown type name 'string'; did you mean 'boost_swap_impl::string'?
    std::vector<string> metrics = {
                ^~~~~~
                boost_swap_impl::string
/usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/stringfwd.h:79:33: note: 'boost_swap_impl::string' declared here
  typedef basic_string<char>    string;   
                                ^
/home/jenkins-build/build/workspace/ceph-pull-requests/src/test/exporter/test_exporter.cc:1427:6: error: expected ';' at end of declaration
    }
     ^
     ;
/home/jenkins-build/build/workspace/ceph-pull-requests/src/test/exporter/test_exporter.cc:1429:10: error: use of undeclared identifier 'string'; did you mean 'stdin'?
    for (string &metric_name : metrics) {
         ^~~~~~
         stdin

did you run tests locally?

@avanthakkar avanthakkar force-pushed the exporter-unit-tests branch from cfd0c18 to 16af936 Compare April 12, 2024 09:40
@avanthakkar
Copy link
Contributor Author

/home/jenkins-build/build/workspace/ceph-pull-requests/src/test/exporter/test_exporter.cc:1423:17: error: unknown type name 'string'; did you mean 'boost_swap_impl::string'?
    std::vector<string> metrics = {
                ^~~~~~
                boost_swap_impl::string
/usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/stringfwd.h:79:33: note: 'boost_swap_impl::string' declared here
  typedef basic_string<char>    string;   
                                ^
/home/jenkins-build/build/workspace/ceph-pull-requests/src/test/exporter/test_exporter.cc:1427:6: error: expected ';' at end of declaration
    }
     ^
     ;
/home/jenkins-build/build/workspace/ceph-pull-requests/src/test/exporter/test_exporter.cc:1429:10: error: use of undeclared identifier 'string'; did you mean 'stdin'?
    for (string &metric_name : metrics) {
         ^~~~~~
         stdin

did you run tests locally?

Yes, I rebased & just fixed that issue & added the unit tests for the regex changes introduced here #56421

@avanthakkar avanthakkar force-pushed the exporter-unit-tests branch from 16af936 to e9e7231 Compare April 12, 2024 10:06
@avanthakkar avanthakkar force-pushed the exporter-unit-tests branch 3 times, most recently from a73517e to 1f61398 Compare April 12, 2024 11:06
Copy link
Contributor

@pereman2 pereman2 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

did you run tests locally?

Yes, I rebased & just fixed that issue & added the unit tests for the regex changes introduced here #56421

160/293 Test #214: unittest_exporter .........................***Failed    0.63 sec
did not load config file, using default settings.
[==========] Running 4 tests from 1 test suite.
[----------] Global test environment set-up.
[----------] 4 tests from Exporter
[ RUN      ] Exporter.promethize
[       OK ] Exporter.promethize (4 ms)
[ RUN      ] Exporter.check_labels_and_metric_name
[       OK ] Exporter.check_labels_and_metric_name (0 ms)
[ RUN      ] Exporter.dump_asok_metrics
2024-04-12T11:17:01.527+0000 7fc469d1dac0 -1 Errors while parsing config file!
2024-04-12T11:17:01.527+0000 7fc469d1dac0 -1 can't open ceph.conf: (2) No such file or directory
2024-04-12T11:17:01.527+0000 7fc469d1dac0 -1 Errors while parsing config file!
2024-04-12T11:17:01.527+0000 7fc469d1dac0 -1 can't open ceph.conf: (2) No such file or directory
[       OK ] Exporter.dump_asok_metrics (64 ms)
[ RUN      ] Exporter.add_fixed_name_metrics
/home/jenkins-build/build/workspace/ceph-pull-requests/src/test/exporter/test_exporter.cc:1437: Failure
Expected equality of these values:
  new_metric.first
    Which is: { ("source_zone", "\"data_sync_from_zone2-zg1-realm1_fetch_bytes\"") }
  expected_labels
    Which is: { ("source_zone", "\"zone2-zg1-realm1\"") }
/home/jenkins-build/build/workspace/ceph-pull-requests/src/test/exporter/test_exporter.cc:1438: Failure
Value of: new_metric.second == expected_metric_name
  Actual: false
Expected: true
[  FAILED  ] Exporter.add_fixed_name_metrics (0 ms)
[----------] 4 tests from Exporter (68 ms total)

[----------] Global test environment tear-down
[==========] 4 tests from 1 test suite ran. (68 ms total)
[  PASSED  ] 3 tests.
[  FAILED  ] 1 test, listed below:
[  FAILED  ] Exporter.add_fixed_name_metrics

 1 FAILED TEST

@avanthakkar
Copy link
Contributor Author

avanthakkar commented Apr 15, 2024

did you run tests locally?

Yes, I rebased & just fixed that issue & added the unit tests for the regex changes introduced here #56421

160/293 Test #214: unittest_exporter .........................***Failed    0.63 sec
did not load config file, using default settings.
[==========] Running 4 tests from 1 test suite.
[----------] Global test environment set-up.
[----------] 4 tests from Exporter
[ RUN      ] Exporter.promethize
[       OK ] Exporter.promethize (4 ms)
[ RUN      ] Exporter.check_labels_and_metric_name
[       OK ] Exporter.check_labels_and_metric_name (0 ms)
[ RUN      ] Exporter.dump_asok_metrics
2024-04-12T11:17:01.527+0000 7fc469d1dac0 -1 Errors while parsing config file!
2024-04-12T11:17:01.527+0000 7fc469d1dac0 -1 can't open ceph.conf: (2) No such file or directory
2024-04-12T11:17:01.527+0000 7fc469d1dac0 -1 Errors while parsing config file!
2024-04-12T11:17:01.527+0000 7fc469d1dac0 -1 can't open ceph.conf: (2) No such file or directory
[       OK ] Exporter.dump_asok_metrics (64 ms)
[ RUN      ] Exporter.add_fixed_name_metrics
/home/jenkins-build/build/workspace/ceph-pull-requests/src/test/exporter/test_exporter.cc:1437: Failure
Expected equality of these values:
  new_metric.first
    Which is: { ("source_zone", "\"data_sync_from_zone2-zg1-realm1_fetch_bytes\"") }
  expected_labels
    Which is: { ("source_zone", "\"zone2-zg1-realm1\"") }
/home/jenkins-build/build/workspace/ceph-pull-requests/src/test/exporter/test_exporter.cc:1438: Failure
Value of: new_metric.second == expected_metric_name
  Actual: false
Expected: true
[  FAILED  ] Exporter.add_fixed_name_metrics (0 ms)
[----------] 4 tests from Exporter (68 ms total)

[----------] Global test environment tear-down
[==========] 4 tests from 1 test suite ran. (68 ms total)
[  PASSED  ] 3 tests.
[  FAILED  ] 1 test, listed below:
[  FAILED  ] Exporter.add_fixed_name_metrics

 1 FAILED TEST

Yeah regex is almost impossible to construct without any restriction for zone name. also it seems like prometheus module was following a pattern or atleast assuming it so I'm gonna follow the same in exporter now & update
https://github.com/ceph/ceph/blob/quincy/src/pybind/mgr/prometheus/module.py#L1565

@jmolmo
Copy link
Member

jmolmo commented Apr 15, 2024

Yeah regex is almost impossible to construct without any restriction for zone name.

I have been 2 weeks saying you to execute your test by yourself and pointing you that the regex does not work.Please :

  1. Move this test to the pull request where the function is implemented
  2. The test must test the extraction of the zone and the composition of the metric name.
  3. Execute the test over the code you modified, and provide in the pull request comment the evidence of the test execution.

You would have my complete opposition to merge this unless you do what I am saying. I am not going to review nothing more until i see the code, the test,and the execution of the test in pr 56421

@avanthakkar
Copy link
Contributor Author

Yeah regex is almost impossible to construct without any restriction for zone name.

I have been 2 weeks saying you to execute your test by yourself and pointing you that the regex does not work.Please :

1. Move this test to the pull request where the function is implemented

2. The test must test the extraction of the zone and the composition of the metric name.

3. Execute the test over the code you modified, and provide in the [pull request](https://github.com/ceph/ceph/pull/56421) comment the evidence of the test execution.

You would have my complete opposition to merge this unless you do what I am saying. I am not going to review nothing more until i see the code, the test,and the execution of the test in pr 56421

I wanted to touch base regarding the discussion on zone name restrictions. I've reached out to the RGW team to clarify the pattern for zone names. In the meantime, I'm considering using the regex pattern that was previously employed in the Prometheus module, as it proved effective.

Regarding the PR migration, I understand your point. I think it would be preferable to incorporate the changes from PR #56421 into this PR and close the former. Since this PR focuses mainly on introducing unit tests, while the other PR contains only the regex fix, consolidating them here would streamline the process. How does that sound to you? @jmolmo

@jmolmo
Copy link
Member

jmolmo commented Apr 15, 2024

@avanthakkar please refer to:
#56421 (comment)

@avanthakkar
Copy link
Contributor Author

@avanthakkar please refer to: #56421 (comment)

Yes I understood the point, but I'm saying if we could have this trivial change of regex in this PR itself it'd be perfect, bcz this PR has unit test setup also & it already has regex changes , maybe some modification would be required but mostly its good. The PR #56421 we can close in favor of this PR including the changes required, instead of moving 100s of lines of code changes to other PR we can simply move a couple lines changes here itself.

@github-actions
Copy link

github-actions bot commented May 6, 2024

This pull request can no longer be automatically merged: a rebase is needed and changes have to be manually resolved

Copy link
Contributor

@pereman2 pereman2 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[ RUN ] Exporter.dump_asok_metrics
/home/jenkins-build/build/workspace/ceph-pull-requests/src/test/exporter/test_exporter.cc:1293: Failure
Value of: collector.metrics.find(expectedMetrics) != std::string::npos
Actual: false
Expected: true

@avanthakkar avanthakkar force-pushed the exporter-unit-tests branch from fe693d0 to ccdd877 Compare May 22, 2024 06:22
@avanthakkar avanthakkar requested review from jmolmo and pereman2 May 22, 2024 06:23
@avanthakkar
Copy link
Contributor Author

[ RUN ] Exporter.dump_asok_metrics /home/jenkins-build/build/workspace/ceph-pull-requests/src/test/exporter/test_exporter.cc:1293: Failure Value of: collector.metrics.find(expectedMetrics) != std::string::npos Actual: false Expected: true

Yes, I was fixing it probably should've marked PR WIP. Anyways I've fixed the tests now & they all passed locally
cc @jmolmo

$ ./bin/unittest_exporter 
[==========] Running 4 tests from 1 test suite.
[----------] Global test environment set-up.
[----------] 4 tests from Exporter
[ RUN      ] Exporter.promethize
[       OK ] Exporter.promethize (0 ms)
[ RUN      ] Exporter.check_labels_and_metric_name
[       OK ] Exporter.check_labels_and_metric_name (0 ms)
[ RUN      ] Exporter.dump_asok_metrics
[       OK ] Exporter.dump_asok_metrics (2 ms)
[ RUN      ] Exporter.add_fixed_name_metrics
[       OK ] Exporter.add_fixed_name_metrics (0 ms)
[----------] 4 tests from Exporter (2 ms total)

[----------] Global test environment tear-down
[==========] 4 tests from 1 test suite ran. (2 ms total)
[  PASSED  ] 4 tests.

@avanthakkar
Copy link
Contributor Author

jenkins test windows

@avanthakkar
Copy link
Contributor Author

jenkins test make check arm64

@avanthakkar avanthakkar merged commit fe8a9f1 into ceph:main Jun 4, 2024
@avanthakkar avanthakkar deleted the exporter-unit-tests branch June 4, 2024 09:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants