Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/Firefox/security/nss/cmd/libpkix/pkix/util/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 8 kB image not shown  

Quelle  test_logger.c   Sprache: C

 
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

/*
 * test_logger.c
 *
 * Tests Logger Objects
 *
 */


#include "testutil.h"
#include "testutil_nss.h"

static void *plContext = NULL;

static char *levels[] = {
    "None",
    "Fatal Error",
    "Error",
    "Warning",
    "Debug",
    "Trace"
};

static PKIX_Error *
testLoggerCallback(
    PKIX_Logger *logger,
    PKIX_PL_String *message,
    PKIX_UInt32 logLevel,
    PKIX_ERRORCLASS logComponent,
    void *plContext)
{
    char *comp = NULL;
    char *msg = NULL;
    char result[100];
    static int callCount = 0;

    PKIX_TEST_STD_VARS();

    msg = PKIX_String2ASCII(message, plContext);
    PR_snprintf(result, 100, "Logging %s (%s): %s",
                levels[logLevel], PKIX_ERRORCLASSNAMES[logComponent], msg);
    subTest(result);

    callCount++;
    if (callCount > 1) {
        testError("Incorrect number of Logger Callback ");
    }

cleanup:

    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Free(msg, plContext));
    PKIX_TEST_RETURN();
}

static PKIX_Error *
testLoggerCallback2(
    PKIX_Logger *logger,
    PKIX_PL_String *message,
    PKIX_UInt32 logLevel,
    PKIX_ERRORCLASS logComponent,
    void *plContext)
{
    char *comp = NULL;
    char *msg = NULL;
    char result[100];

    PKIX_TEST_STD_VARS();

    msg = PKIX_String2ASCII(message, plContext);
    PR_snprintf(result, 100, "Logging %s (%s): %s",
                levels[logLevel], PKIX_ERRORCLASSNAMES[logComponent], msg);
    subTest(result);

cleanup:
    PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Free(msg, plContext));
    PKIX_TEST_RETURN();
}

static void
createLogger(PKIX_Logger **logger,
             PKIX_PL_Object *context,
             PKIX_Logger_LogCallback cb)
{
    PKIX_TEST_STD_VARS();

    PKIX_TEST_EXPECT_NO_ERROR(PKIX_Logger_Create(cb, context, logger, plContext));

cleanup:

    PKIX_TEST_RETURN();
}

static void
testContextCallback(PKIX_Logger *logger, PKIX_Logger *logger2)
{
    PKIX_Logger_LogCallback cb = NULL;
    PKIX_PL_Object *context = NULL;
    PKIX_Boolean cmpResult = PKIX_FALSE;
    PKIX_UInt32 length;

    PKIX_TEST_STD_VARS();

    subTest("PKIX_Logger_GetLoggerContext");
    PKIX_TEST_EXPECT_NO_ERROR(PKIX_Logger_GetLoggerContext(logger2, &context, plContext));

    testEqualsHelper((PKIX_PL_Object *)logger, context, PKIX_TRUE, plContext);

    subTest("PKIX_Logger_GetLogCallback");
    PKIX_TEST_EXPECT_NO_ERROR(PKIX_Logger_GetLogCallback(logger, &cb, plContext));

    if (cb != testLoggerCallback) {
        testError("Incorrect Logger Callback returned");
    }

cleanup:

    PKIX_TEST_DECREF_AC(context);
    PKIX_TEST_RETURN();
}

static void
testComponent(PKIX_Logger *logger)
{
    PKIX_ERRORCLASS compName = (PKIX_ERRORCLASS)NULL;
    PKIX_ERRORCLASS compNameReturn = (PKIX_ERRORCLASS)NULL;
    PKIX_Boolean cmpResult = PKIX_FALSE;
    PKIX_TEST_STD_VARS();

    subTest("PKIX_Logger_GetLoggingComponent");
    PKIX_TEST_EXPECT_NO_ERROR(PKIX_Logger_GetLoggingComponent(logger, &compName, plContext));

    if (compName != (PKIX_ERRORCLASS)NULL) {
        testError("Incorrect Logger Component returned. expect ");
    }

    subTest("PKIX_Logger_SetLoggingComponent");
    PKIX_TEST_EXPECT_NO_ERROR(PKIX_Logger_SetLoggingComponent(logger, PKIX_LIST_ERROR, plContext));

    subTest("PKIX_Logger_GetLoggingComponent");
    PKIX_TEST_EXPECT_NO_ERROR(PKIX_Logger_GetLoggingComponent(logger, &compNameReturn, plContext));

    if (compNameReturn != PKIX_LIST_ERROR) {
        testError("Incorrect Logger Component returned.");
    }

cleanup:

    PKIX_TEST_RETURN();
}

static void
testMaxLoggingLevel(PKIX_Logger *logger)
{
    PKIX_UInt32 level = 0;
    PKIX_TEST_STD_VARS();

    subTest("PKIX_Logger_GetMaxLoggingLevel");
    PKIX_TEST_EXPECT_NO_ERROR(PKIX_Logger_GetMaxLoggingLevel(logger, &level, plContext));

    if (level != 0) {
        testError("Incorrect Logger MaxLoggingLevel returned");
    }

    subTest("PKIX_Logger_SetMaxLoggingLevel");
    PKIX_TEST_EXPECT_NO_ERROR(PKIX_Logger_SetMaxLoggingLevel(logger, 3, plContext));

    subTest("PKIX_Logger_GetMaxLoggingLevel");
    PKIX_TEST_EXPECT_NO_ERROR(PKIX_Logger_GetMaxLoggingLevel(logger, &level, plContext));

    if (level != 3) {
        testError("Incorrect Logger MaxLoggingLevel returned");
    }

cleanup:

    PKIX_TEST_RETURN();
}

static void
testLogger(PKIX_Logger *logger, PKIX_Logger *logger2)
{
    PKIX_List *loggerList = NULL;
    PKIX_List *checkList = NULL;
    PKIX_UInt32 length;
    PKIX_Boolean cmpResult = PKIX_FALSE;
    char *expectedAscii = "[\n"
                          "\tLogger: \n"
                          "\tContext: (null)\n"
                          "\tMaximum Level: 3\n"
                          "\tComponent Name: LIST\n"
                          "]\n";

    PKIX_TEST_STD_VARS();

    subTest("PKIX_GetLoggers");
    PKIX_TEST_EXPECT_NO_ERROR(PKIX_GetLoggers(&loggerList, plContext));
    PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_GetLength(loggerList, &length, plContext));
    if (length != 0) {
        testError("Incorrect Logger List returned");
    }
    PKIX_TEST_DECREF_BC(loggerList);

    PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_Create(&loggerList, plContext));
    PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_AppendItem(loggerList, (PKIX_PL_Object *)logger, plContext));

    subTest("PKIX_SetLoggers");
    PKIX_TEST_EXPECT_NO_ERROR(PKIX_SetLoggers(loggerList, plContext));

    subTest("PKIX_Logger_SetLoggingComponent");
    PKIX_TEST_EXPECT_NO_ERROR(PKIX_Logger_SetLoggingComponent(logger2, PKIX_MUTEX_ERROR, plContext));

    subTest("PKIX_Logger_SetMaxLoggingLevel");
    PKIX_TEST_EXPECT_NO_ERROR(PKIX_Logger_SetMaxLoggingLevel(logger2, 5, plContext));

    subTest("PKIX_AddLogger");
    PKIX_TEST_EXPECT_NO_ERROR(PKIX_AddLogger(logger2, plContext));

    PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_Create(&checkList, plContext));
    PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_AppendItem(checkList, (PKIX_PL_Object *)logger, plContext));
    PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_AppendItem(checkList, (PKIX_PL_Object *)logger2, plContext));

    PKIX_TEST_DECREF_BC(loggerList);

    subTest("PKIX_GetLoggers");
    PKIX_TEST_EXPECT_NO_ERROR(PKIX_GetLoggers(&loggerList, plContext));
    PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_GetLength(loggerList, &length, plContext));

    subTest("pkix_Loggers_Equals");
    testEqualsHelper((PKIX_PL_Object *)loggerList,
                     (PKIX_PL_Object *)checkList,
                     PKIX_TRUE,
                     plContext);

    subTest("pkix_Loggers_Duplicate");
    testDuplicateHelper((PKIX_PL_Object *)logger, plContext);

    subTest("pkix_Loggers_Hashcode");
    testHashcodeHelper((PKIX_PL_Object *)logger,
                       (PKIX_PL_Object *)logger,
                       PKIX_TRUE,
                       plContext);

    subTest("pkix_Loggers_ToString");
    testToStringHelper((PKIX_PL_Object *)logger, expectedAscii, plContext);

    subTest("PKIX Logger Callback");
    subTest("Expect to have ***Fatal Error (List): Null argument*** once");
    PKIX_TEST_EXPECT_ERROR(PKIX_List_AppendItem(NULL, (PKIX_PL_Object *)NULL, plContext));

cleanup:

    PKIX_TEST_DECREF_AC(loggerList);
    PKIX_TEST_DECREF_AC(checkList);
    PKIX_TEST_RETURN();
}

static void
testDestroy(PKIX_Logger *logger)
{
    PKIX_TEST_STD_VARS();

    PKIX_TEST_DECREF_BC(logger);

cleanup:

    PKIX_TEST_RETURN();
}

int
test_logger(int argc, char *argv[])
{

    PKIX_Logger *logger, *logger2;
    PKIX_UInt32 actualMinorVersion;
    PKIX_UInt32 j = 0;

    PKIX_TEST_STD_VARS();

    startTests("Loggers");

    PKIX_TEST_EXPECT_NO_ERROR(
        PKIX_PL_NssContext_Create(0, PKIX_FALSE, NULL, &plContext));

    subTest("PKIX_Logger_Create");
    createLogger(&logger, NULL, testLoggerCallback);
    createLogger(&logger2, (PKIX_PL_Object *)logger, testLoggerCallback2);

    subTest("Logger Context and Callback");
    testContextCallback(logger, logger2);

    subTest("Logger Component");
    testComponent(logger);

    subTest("Logger MaxLoggingLevel");
    testMaxLoggingLevel(logger);

    subTest("Logger List operations");
    testLogger(logger, logger2);

    subTest("PKIX_Logger_Destroy");
    testDestroy(logger);
    testDestroy(logger2);

cleanup:

    PKIX_Shutdown(plContext);

    PKIX_TEST_RETURN();

    endTests("Loggers");

    return (0);
}

Messung V0.5
C=95 H=98 G=96

¤ Dauer der Verarbeitung: 0.14 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.