hiero-ledger / hiero-ledger/hiero-sdk-cpp
[Good First Issue]: Remove FeeEstimateQuery integration test SetUpTestSuite wait-for-ready loop
- Dominant language
- C++
- Stars
- 42
- Forks
- 108
- Avg merge
- 11h 45m
- Merged PRs (30d)
- 2
Description
### 🆕🐥 First-Time Friendly
This issue is especially welcoming for people who are new to contributing to the **Hiero C++ SDK**.
We know that opening your first pull request can feel like a big step. Issues labeled **Good First Issue** are designed to make that experience easier, clearer, and more comfortable.
No prior knowledge of Hiero, Hedera, or distributed ledger technology is required - just a basic familiarity with C++ and Git is more than enough to get started.
> [!IMPORTANT]
> ### 📋 About Good First Issues
>
> Good First Issues are designed to make getting started as smooth and stress-free as possible.
>
> They usually focus on:
> - Small, clearly scoped changes
> - Straightforward updates to existing code or docs
> - Simple refactors or clarity improvements
>
> Other kinds of contributions — like larger features, deeper technical changes, or design-focused work — are just as valuable and often use the beginner, intermediate, or advanced labels.
### 👾 Description of the Task
`FeeEstimateQueryIntegrationTests` currently has a `SetUpTestSuite()` hook that polls the mirror node's fee estimation endpoint for up to 10 minutes before any test runs. It was added to work around [`hiero-ledger/solo#4228`](https://github.com/hiero-ledger/solo/issues/4228) — a race in the mirror node's `rest-java` `FeeEstimationService` where the simple-fee schedule isn't loaded until the `@Scheduled` refresh fires (up to 10 minutes after a fresh solo deploy).
Once `solo#4228` is closed and the fix has shipped in the solo / mirror version pinned in `.github/workflows/zxc-build-library.yaml`, the polling loop is no longer needed and should be removed.
The change is confined to one file:
```
src/sdk/tests/integration/FeeEstimateQueryIntegrationTests.cc
```
Three things to delete:
1. The block comment above the `FeeEstimateQueryIntegrationTests` class describing the warmup race.
2. The `public:` section containing `SetUpTestSuite()`.
3. The two includes that were only used by that hook: `` and ``.
The fixture body should end up empty:
```cpp
class FeeEstimateQueryIntegrationTests : public BaseIntegrationTest
{
};
```
### 💡 Proposed Approach
Before starting, **verify that `solo#4228` is actually closed** by visiting . If it is still open, comment on this issue and unassign yourself — the work is still blocked.
Once the issue is resolved:
1. Edit `src/sdk/tests/integration/FeeEstimateQueryIntegrationTests.cc` and delete the three items listed above.
2. Run the integration suite against a local solo network to confirm the tests still pass without the polling loop.
3. Run `clang-format-17 -i` on the file.
4. Commit and open a PR.
No other file should change.
### 👩💻 Implementation Steps
- [ ] Confirm [`solo#4228`](https://github.com/hiero-ledger/solo/issues/4228) is closed and the fix has shipped in the solo / mirror version pinned in `.github/workflows/zxc-build-library.yaml`. If not, stop here and comment on this issue.
- [ ] Open `src/sdk/tests/integration/FeeEstimateQueryIntegrationTests.cc`.
- [ ] Delete the doc-comment block immediately above `class FeeEstimateQueryIntegrationTests` (the one starting with `/**` and explaining the FeeEstimationService race and citing solo#4228).
- [ ] Delete the entire `public: static void SetUpTestSuite() { ... }` member, including everything inside it.
- [ ] The class body should now be empty: `class FeeEstimateQueryIntegrationTests : public BaseIntegrationTest {};`
- [ ] Remove the `#include ` and `#include ` lines from the include block — they were only used by `SetUpTestSuite()`.
- [ ] Run `clang-format-17 -i src/sdk/tests/integration/FeeEstimateQueryIntegrationTests.cc`.
- [ ] Build the integration test target:
```bash
cmake --preset linux-x64-debug -DBUILD_TESTS=ON
cmake --build -j 6 --preset linux-x64-debug --target hiero-sdk-cpp-integration-tests
```
- [ ] Start a local Hiero network (solo) so the mirror node fee endpoint is reachable.
- [ ] Run the suite:
```bash
ctest -C Debug --test-dir build/linux-x64-debug -R FeeEstimateQueryIntegrationTests --output-on-failure
```
All 17 tests should pass.
- [ ] Commit and open a pull request.
### ✔️ Acceptance Criteria
- [ ] `src/sdk/tests/integration/FeeEstimateQueryIntegrationTests.cc` no longer contains `SetUpTestSuite`, the warmup-race comment block, or the `` / `` includes.
- [ ] All 17 tests in `FeeEstimateQueryIntegrationTests` still pass against a local solo network.
- [ ] `clang-format-17` is satisfied on the modified file.
- [ ] No other files are modified.
- [ ] No unrelated changes are introduced.
---
### 📋 Step-by-Step Contribution Guide
To help keep contributions consistent and easy to review, we recommend following these steps:
- [ ] Comment `/assign` to request the issue
- [ ] Wait for assignment
- [ ] Fork the repository and create a branch
- [ ] Set up the project using the instructions in `README.md`
- [ ] Make the requested changes
- [ ] Sign each commit using `-s -S`
- [ ] Push your branch and open a pull request
Read [Workflow Guide](https://github.com/hiero-ledger/hiero-sdk-cpp/blob/main/docs/training/workflow.md) for step-by-step workflow guidance.
Read [README.md](https://github.com/hiero-ledger/hiero-sdk-cpp/blob/main/README.md) for setup instructions.
❗ Pull requests **cannot be merged** without `S` and `s` signed commits.
See the [Signing Guide](https://github.com/hiero-ledger/hiero-sdk-cpp/blob/main/docs/training/signing.md).
### 🤔 Additional Information
**Why this exists:** the `SetUpTestSuite` hook polls a known-good `INTRINSIC` fee estimate every 5 seconds for up to 10 minutes, then `FAIL()`s if the mirror's `FeeEstimationService` never becomes ready. It was modeled after the same pattern in `hiero-sdk-js` ([PR #3996](https://github.com/hiero-ledger/hiero-sdk-js/pull/3996)). Once `solo#4228` is resolved upstream, the race goes away and the poll is dead weight.
**Tracking issue:**
If you have questions while working on this issue, feel free to ask!
You can reach the community and maintainers here: [Hiero-SDK-C++ Discord](https://discord.com/channels/905194001349627914/1337424839761465364)
Whether you need help finding the right file, understanding existing code, or confirming your approach — we're happy to help.
Contributor guide
Assessment
This issue has not been assessed yet.