@Override
    public CompletableFuture<Set<AbstractID>> listCompletedClusterDatasetIds() {
        return sendRequest(ClusterDataSetListHeaders.INSTANCE)
                .thenApply(
                        clusterDataSetListResponseBody ->
                                clusterDataSetListResponseBody.getDataSets().stream()
                                        .filter(ClusterDataSetEntry::isComplete)
                                        .map(ClusterDataSetEntry::getDataSetId)
                                        .map(id -> new AbstractID(StringUtils.hexStringToByte(id)))
                                        .collect(Collectors.toSet()));
    }
@Test
    public void testListCompletedClusterDatasetIds() {
        Set<AbstractID> expectedCompletedClusterDatasetIds = new HashSet<>();
        expectedCompletedClusterDatasetIds.add(new AbstractID());
        expectedCompletedClusterDatasetIds.add(new AbstractID());

        try (TestRestServerEndpoint restServerEndpoint =
                createRestServerEndpoint(
                        new TestListCompletedClusterDatasetHandler(
                                expectedCompletedClusterDatasetIds))) {
            try (RestClusterClient<?> restClusterClient =
                    createRestClusterClient(restServerEndpoint.getServerAddress().getPort())) {
                final Set<AbstractID> returnedIds =
                        restClusterClient.listCompletedClusterDatasetIds().get();
                assertThat(returnedIds).isEqualTo(expectedCompletedClusterDatasetIds);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }