Commit a124a762 authored by Greg Williams's avatar Greg Williams
Browse files

Added support to kinetic-c-util for admin operations.

Updated utility to use getopt_long for all paramters.
Added usage info and -?/--help params to report as well.
Added additional attributes to support customization of entry operations.
Added --loglevel, which defaults to 0 if not specified.
parent fbc90802
Loading
Loading
Loading
Loading
+11 −12
Original line number Diff line number Diff line
@@ -194,18 +194,6 @@ void KineticAdminClient_FreeLogInfo(KineticSession const * const session,
KineticStatus KineticAdminClient_SetClusterVersion(KineticSession const * const session,
    int64_t version);

/**
 * @brief Executes a Firmware Download command to update the firmware on the Kinetic device.
 *
 * @param session       The connected KineticSession to use for the operation.
 * @param fw_path       Path to firmware update image file.
 *
 * @return              Returns the resulting KineticStatus.
 */
KineticStatus KineticAdminClient_UpdateFirmware(KineticSession const * const session,
    char const * const fw_path);


/**
 * @brief Executes a SECURITY operation, setting one or more ACLs.
 *
@@ -218,4 +206,15 @@ KineticStatus KineticAdminClient_UpdateFirmware(KineticSession const * const ses
KineticStatus KineticAdminClient_SetACL(KineticSession const * const session,
                                        const char *ACLPath);

/**
 * @brief Executes a Firmware Download operation to update the firmware on the Kinetic device.
 *
 * @param session       The connected KineticSession to use for the operation.
 * @param fw_path       Path to firmware update image file.
 *
 * @return              Returns the resulting KineticStatus.
 */
KineticStatus KineticAdminClient_UpdateFirmware(KineticSession const * const session,
    char const * const fw_path);

#endif // _KINETIC_ADMIN_CLIENT_H
+2 −2
Original line number Diff line number Diff line
@@ -66,11 +66,11 @@ void KineticLogger_Init(const char* log_file, int log_level)
        KineticLogLevel = log_level;
        
        if (strncmp(log_file, "stdout", 4) == 0 || strncmp(log_file, "STDOUT", 4) == 0) {
            printf("\nLogging kinetic-c output to console (stdout) w/ log_level=%d\n", KineticLogLevel);
            printf("Logging kinetic-c output to console (stdout) w/ log_level=%d\n", KineticLogLevel);
            KineticLoggerHandle = stdout;
        }
        else {
            printf("\nLogging kinetic-c output to %s w/ log_level=%d\n", log_file, KineticLogLevel);
            printf("Logging kinetic-c output to %s w/ log_level=%d\n", log_file, KineticLogLevel);
            KineticLoggerHandle = fopen(log_file, "a+");
            KINETIC_ASSERT(KineticLoggerHandle != NULL);
        }
+641 −182

File changed.

Preview size limit exceeded, changes collapsed.

+91 −91
Original line number Diff line number Diff line
@@ -40,98 +40,98 @@ void tearDown(void)
    SystemTestShutDown();
}

// void test_GetLog_should_retrieve_utilizations_from_device(void)
// {
//     Status = KineticAdminClient_GetLog(Fixture.session, KINETIC_DEVICE_INFO_TYPE_UTILIZATIONS, &Info, NULL);
//     TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_SUCCESS, Status);
//     TEST_ASSERT_NOT_NULL(Info);
//     TEST_ASSERT_NOT_NULL(Info->utilizations);
//     TEST_ASSERT_TRUE(Info->numUtilizations >= 4);
//     for (size_t i = 0; i < Info->numUtilizations; i++) {
//         TEST_ASSERT_NOT_NULL(Info->utilizations[i].name);
//         KineticLogInfo_Utilization* utilization = &Info->utilizations[i];
//         LOGF0("info->utilizations[%zu]: %s = %.3f", i, utilization->name, utilization->value);
//     }
// }

// void test_GetLog_should_retrieve_capacity_from_device(void)
// {
//     Status = KineticAdminClient_GetLog(Fixture.session, KINETIC_DEVICE_INFO_TYPE_CAPACITIES, &Info, NULL);
//     TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_SUCCESS, Status);
//     TEST_ASSERT_NOT_NULL(Info->capacity);

//     LOGF0("info->capacity['nominalCapacityInBytes']: %.llu", Info->capacity->nominalCapacityInBytes);
//     LOGF0("info->capacity['portionFull']: %.3f", Info->capacity->portionFull);
// }

// void test_GetLog_should_retrieve_temeratures_from_device(void)
// {
//     Status = KineticAdminClient_GetLog(Fixture.session, KINETIC_DEVICE_INFO_TYPE_TEMPERATURES, &Info, NULL);
//     TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_SUCCESS, Status);
//     TEST_ASSERT_TRUE(Info->numTemperatures >= 2);

//     for (size_t i = 0; i < Info->numTemperatures; i++) {
//         TEST_ASSERT_NOT_NULL(Info->temperatures[i].name);
//         LOGF0("info->temperatures['%s']: current=%.1f, minimum=%.1f, maximum=%.1f, target=%.1f",
//             Info->temperatures[i].name,
//             Info->temperatures[i].current, Info->temperatures[i].minimum,
//             Info->temperatures[i].maximum, Info->temperatures[i].target);
//     }
// }

// void test_GetLog_should_retrieve_configuration_from_device(void)
// {
//     char buf[1024];
    
//     Status = KineticAdminClient_GetLog(Fixture.session, KINETIC_DEVICE_INFO_TYPE_CONFIGURATION, &Info, NULL);

//     TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_SUCCESS, Status);
//     TEST_ASSERT_NOT_NULL(Info);
//     TEST_ASSERT_NOT_NULL(Info->configuration);

//     LOG0("info->configuration:");
//     LOGF0("  vendor: %s", Info->configuration->vendor);
//     LOGF0("  model: %s", Info->configuration->model);
//     BYTES_TO_CSTRING(buf, Info->configuration->serialNumber, 0, Info->configuration->serialNumber.len);
//     LOGF0("  serialNumber: %s", buf);
//     BYTES_TO_CSTRING(buf, Info->configuration->worldWideName, 0, Info->configuration->worldWideName.len);
//     LOGF0("  worldWideName: %s", buf);
//     LOGF0("  version: %s", Info->configuration->version);
//     LOGF0("  compilationDate: %s", Info->configuration->compilationDate);
//     LOGF0("  sourceHash: %s", Info->configuration->sourceHash);
//     LOGF0("  protocolVersion: %s", Info->configuration->protocolVersion);
//     LOGF0("  protocolCompilationDate: %s", Info->configuration->protocolCompilationDate);
//     LOGF0("  protocolSourceHash: %s", Info->configuration->protocolSourceHash);
//     for (size_t i = 0; i < Info->configuration->numInterfaces; i++) {
//         KineticLogInfo_Interface* iface = &Info->configuration->interfaces[i];
//         TEST_ASSERT_NOT_NULL(iface->name);
//         LOGF0("  interface: %s", iface->name);
//         BYTES_TO_CSTRING(buf, iface->MAC, 0, iface->MAC.len);
//         LOGF0("    MAC: %s", buf);
//         BYTES_TO_CSTRING(buf, iface->ipv4Address, 0, iface->ipv4Address.len);
//         LOGF0("    ipv4Address: %s", buf);
//         BYTES_TO_CSTRING(buf, iface->ipv6Address, 0, iface->ipv6Address.len);
//         LOGF0("    ipv6Address: %s", buf);
//     }
//     LOGF0("  port: %d", Info->configuration->port);
//     LOGF0("  tlsPort: %d", Info->configuration->tlsPort);
// }

// void test_GetLog_should_retrieve_statistics_from_device(void)
// {
//     Status = KineticAdminClient_GetLog(Fixture.session, KINETIC_DEVICE_INFO_TYPE_STATISTICS, &Info, NULL);
//     TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_SUCCESS, Status);
//     TEST_ASSERT_NOT_NULL(Info->statistics);
//     TEST_ASSERT_TRUE(Info->numStatistics > 0);

//     LOGF0("Device Statistics (count=%zu)", Info->numStatistics);
//     for (size_t i = 0; i < Info->numStatistics; i++) {
//         KineticLogInfo_Statistics* stats = &Info->statistics[i];
//         LOGF0("  %s: count=%llu, bytes=%llu",
//             KineticMessageType_GetName(stats->messageType),
//             stats->count, stats->bytes);
//     }
// }
void test_GetLog_should_retrieve_utilizations_from_device(void)
{
    Status = KineticAdminClient_GetLog(Fixture.session, KINETIC_DEVICE_INFO_TYPE_UTILIZATIONS, &Info, NULL);
    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_SUCCESS, Status);
    TEST_ASSERT_NOT_NULL(Info);
    TEST_ASSERT_NOT_NULL(Info->utilizations);
    TEST_ASSERT_TRUE(Info->numUtilizations >= 4);
    for (size_t i = 0; i < Info->numUtilizations; i++) {
        TEST_ASSERT_NOT_NULL(Info->utilizations[i].name);
        KineticLogInfo_Utilization* utilization = &Info->utilizations[i];
        LOGF0("info->utilizations[%zu]: %s = %.3f", i, utilization->name, utilization->value);
    }
}

void test_GetLog_should_retrieve_capacity_from_device(void)
{
    Status = KineticAdminClient_GetLog(Fixture.session, KINETIC_DEVICE_INFO_TYPE_CAPACITIES, &Info, NULL);
    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_SUCCESS, Status);
    TEST_ASSERT_NOT_NULL(Info->capacity);

    LOGF0("info->capacity['nominalCapacityInBytes']: %.llu", Info->capacity->nominalCapacityInBytes);
    LOGF0("info->capacity['portionFull']: %.3f", Info->capacity->portionFull);
}

void test_GetLog_should_retrieve_temeratures_from_device(void)
{
    Status = KineticAdminClient_GetLog(Fixture.session, KINETIC_DEVICE_INFO_TYPE_TEMPERATURES, &Info, NULL);
    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_SUCCESS, Status);
    TEST_ASSERT_TRUE(Info->numTemperatures >= 2);

    for (size_t i = 0; i < Info->numTemperatures; i++) {
        TEST_ASSERT_NOT_NULL(Info->temperatures[i].name);
        LOGF0("info->temperatures['%s']: current=%.1f, minimum=%.1f, maximum=%.1f, target=%.1f",
            Info->temperatures[i].name,
            Info->temperatures[i].current, Info->temperatures[i].minimum,
            Info->temperatures[i].maximum, Info->temperatures[i].target);
    }
}

void test_GetLog_should_retrieve_configuration_from_device(void)
{
    char buf[1024];
    
    Status = KineticAdminClient_GetLog(Fixture.session, KINETIC_DEVICE_INFO_TYPE_CONFIGURATION, &Info, NULL);

    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_SUCCESS, Status);
    TEST_ASSERT_NOT_NULL(Info);
    TEST_ASSERT_NOT_NULL(Info->configuration);

    LOG0("info->configuration:");
    LOGF0("  vendor: %s", Info->configuration->vendor);
    LOGF0("  model: %s", Info->configuration->model);
    BYTES_TO_CSTRING(buf, Info->configuration->serialNumber, 0, Info->configuration->serialNumber.len);
    LOGF0("  serialNumber: %s", buf);
    BYTES_TO_CSTRING(buf, Info->configuration->worldWideName, 0, Info->configuration->worldWideName.len);
    LOGF0("  worldWideName: %s", buf);
    LOGF0("  version: %s", Info->configuration->version);
    LOGF0("  compilationDate: %s", Info->configuration->compilationDate);
    LOGF0("  sourceHash: %s", Info->configuration->sourceHash);
    LOGF0("  protocolVersion: %s", Info->configuration->protocolVersion);
    LOGF0("  protocolCompilationDate: %s", Info->configuration->protocolCompilationDate);
    LOGF0("  protocolSourceHash: %s", Info->configuration->protocolSourceHash);
    for (size_t i = 0; i < Info->configuration->numInterfaces; i++) {
        KineticLogInfo_Interface* iface = &Info->configuration->interfaces[i];
        TEST_ASSERT_NOT_NULL(iface->name);
        LOGF0("  interface: %s", iface->name);
        BYTES_TO_CSTRING(buf, iface->MAC, 0, iface->MAC.len);
        LOGF0("    MAC: %s", buf);
        BYTES_TO_CSTRING(buf, iface->ipv4Address, 0, iface->ipv4Address.len);
        LOGF0("    ipv4Address: %s", buf);
        BYTES_TO_CSTRING(buf, iface->ipv6Address, 0, iface->ipv6Address.len);
        LOGF0("    ipv6Address: %s", buf);
    }
    LOGF0("  port: %d", Info->configuration->port);
    LOGF0("  tlsPort: %d", Info->configuration->tlsPort);
}

void test_GetLog_should_retrieve_statistics_from_device(void)
{
    Status = KineticAdminClient_GetLog(Fixture.session, KINETIC_DEVICE_INFO_TYPE_STATISTICS, &Info, NULL);
    TEST_ASSERT_EQUAL_KineticStatus(KINETIC_STATUS_SUCCESS, Status);
    TEST_ASSERT_NOT_NULL(Info->statistics);
    TEST_ASSERT_TRUE(Info->numStatistics > 0);

    LOGF0("Device Statistics (count=%zu)", Info->numStatistics);
    for (size_t i = 0; i < Info->numStatistics; i++) {
        KineticLogInfo_Statistics* stats = &Info->statistics[i];
        LOGF0("  %s: count=%llu, bytes=%llu",
            KineticMessageType_GetName(stats->messageType),
            stats->count, stats->bytes);
    }
}

uint8_t* Buffer[1024 * 1024 * 10];