Exemple #1
0
/*  Description: Create a mamaPublisher and get its transport
 *
 *  Expected Result: MAMA_STATUS_OK
 */
TEST_F (MamaPublisherTestC, GetTransport)
{
    mamaPublisher    publisher = NULL;
    mamaTransport    tport     = NULL;
    const char*      symbol    = "SYM";
    const char*      source    = "SRC";
   
    ASSERT_EQ (MAMA_STATUS_OK,
               mamaTransport_allocate (&tport));

    ASSERT_EQ (MAMA_STATUS_OK,
               mamaTransport_create (tport, getTransport(), mBridge));

    ASSERT_EQ (MAMA_STATUS_OK,
               mamaPublisher_create (&publisher, tport, symbol, source, NULL));

    ASSERT_EQ(tport, mamaPublisherImpl_getTransportImpl (publisher));

    ASSERT_EQ(tport, mamaPublisherImpl_getTransportImpl (publisher));

    ASSERT_EQ (MAMA_STATUS_OK,
               mamaPublisher_destroy (publisher));

    ASSERT_EQ (MAMA_STATUS_OK,
               mamaTransport_destroy (tport));

    ASSERT_EQ (0, pubOnCreateCount);
    ASSERT_EQ (0, pubOnErrorCount);
    ASSERT_EQ (0, pubOnDestroyCount);
}
Exemple #2
0
/*  Description: Create a mamaPublisher then destroy it.  
 *
 *  Expected Result: MAMA_STATUS_OK
 */
TEST_F (MamaPublisherTestC, CreateDestroy)
{
    mamaPublisher    publisher = NULL;
    mamaTransport    tport     = NULL;
    const char*      source    = getSource();
   
    pubOnCreateCount = 0;
    pubOnErrorCount = 0;
    pubOnDestroyCount = 0;

    ASSERT_EQ (MAMA_STATUS_OK,
               mamaTransport_allocate (&tport));

    ASSERT_EQ (MAMA_STATUS_OK,
               mamaTransport_create (tport, getTransport(), mBridge));

    ASSERT_EQ (MAMA_STATUS_OK,
               mamaPublisher_create (&publisher, tport, source, NULL, NULL));

    ASSERT_EQ (MAMA_STATUS_OK,
               mamaPublisher_destroy (publisher));

    ASSERT_EQ (MAMA_STATUS_OK,
               mamaTransport_destroy (tport));
}
Exemple #3
0
mama_status mamaDQPublisherManager_create (
    mamaDQPublisherManager manager,
    mamaTransport transport,
    mamaQueue  queue,
    const mamaDQPublisherManagerCallbacks*   callback,
    const char* sourcename,
    const char* root,
    void * closure)
{
    char* topic;
    int length = 0;
    mamaDQPublisherManagerImpl* impl  = (mamaDQPublisherManagerImpl*) manager;
    static mamaMsgCallbacks basicSubscCbs =
    {
        dqPublisherImplCreateCb,
        dqPublisherImplErrorCb,
        dqPublisherImplMsgCb,
        NULL
    };

    impl->mUserCallbacks = *callback;
    impl->mTransport = transport;
    impl->mQueue = queue;
    impl->mClosure = closure;
    length = strlen(root) + 1 + (strlen(sourcename) + 1);
    topic = calloc(length, sizeof(char));

    strcpy(topic, root);
    impl->mNameSpace =  strdup(sourcename);
    strcat(topic, ".");
    strcat(topic, sourcename);
    impl->mPublisherMap =  wtable_create  (topic, NUM_BUCKETS);

    mamaSubscription_allocate (&impl->mSubscription);
    mamaPublisher_create (&impl->mPublisher,
                          transport,
                          MAMA_CM_TOPIC,
                          NULL,
                          NULL);
    mamaSubscription_createBasic (impl->mSubscription,
                                  transport,
                                  queue,
                                  &basicSubscCbs,
                                  topic,
                                  impl);
    free(topic);

    return MAMA_STATUS_OK;
}
Exemple #4
0
    void MamaPublisherImpl::create (MamaTransport *transport, 
                                    const char    *topic, 
                                    const char    *source, 
                                    const char    *root)
    {
        if (mPublisher)
        {
            throw MamaStatus (MAMA_STATUS_INVALID_ARG);
        }

        mamaTry (mamaPublisher_create (&mPublisher, 
                                       transport->getCValue(), 
                                       topic, 
                                       source,
                                       root));
    }
Exemple #5
0
/*  Description: Create a mamaPublisher and mamaMsg, send the msg using 
 *               mamaPublisher then destroy both.
 *
 *  Expected Result: MAMA_STATUS_OK
 */
TEST_F (MamaPublisherTestC, Send)
{
    mamaPublisher    publisher = NULL;
    mamaTransport    tport     = NULL;
    const char*      symbol    = getSymbol();
    const char*      source    = getSource();
    mamaMsg          msg       = NULL;

    pubOnCreateCount = 0;
    pubOnErrorCount = 0;
    pubOnDestroyCount = 0;

    ASSERT_EQ (MAMA_STATUS_OK, mama_open());

    ASSERT_EQ (MAMA_STATUS_OK,
               mamaMsg_create (&msg));

    ASSERT_EQ (MAMA_STATUS_OK,
               mamaMsg_addString (msg, symbol, 101, source));

    ASSERT_EQ (MAMA_STATUS_OK,
               mamaTransport_allocate (&tport));

    ASSERT_EQ (MAMA_STATUS_OK,
               mamaTransport_create (tport, getTransport(), mBridge));

    ASSERT_EQ (MAMA_STATUS_OK,
               mamaPublisher_create (&publisher, tport, symbol, source, NULL));

    ASSERT_EQ (MAMA_STATUS_OK,
               mamaPublisher_send (publisher, msg));

    ASSERT_EQ (MAMA_STATUS_OK,
               mamaPublisher_destroy (publisher));

    ASSERT_EQ (MAMA_STATUS_OK,
               mamaTransport_destroy (tport));

    ASSERT_EQ (MAMA_STATUS_OK, mama_close());

    ASSERT_EQ (0, pubOnCreateCount);
    ASSERT_EQ (0, pubOnErrorCount);
    ASSERT_EQ (0, pubOnDestroyCount);
}
Exemple #6
0
static void prepareDictionaryListener (void)
{
    mama_status      status                     = MAMA_STATUS_OK;
    mamaMsgCallbacks dictionarySubCallbacks;

    dictionarySubCallbacks.onCreate       = dictionarySubOnCreate;
    dictionarySubCallbacks.onDestroy      = dictionarySubOnDestroy;
    dictionarySubCallbacks.onError        = dictionarySubOnError;
    dictionarySubCallbacks.onMsg          = dictionarySubOnMsg;

    /* Basic subscription so these are set to NULL */
    dictionarySubCallbacks.onQuality      = NULL;
    dictionarySubCallbacks.onGap          = NULL;
    dictionarySubCallbacks.onRecapRequest = NULL;

    status = mamaSubscription_allocate (&gDictionarySubscription);
    if (MAMA_STATUS_OK != status) 
    {
        mama_log (MAMA_LOG_LEVEL_ERROR,
                  "Could not allocate dictionary subscription.");
        exit (1);
    }

    status = mamaSubscription_createBasic (gDictionarySubscription, 
                                           gPubTransport,
                                           gPubDefaultQueue, 
                                           &dictionarySubCallbacks,
                                           "_MDDD.WOMBAT.DATA_DICT", 
                                           NULL);
    if (status != MAMA_STATUS_OK) 
    {
        mama_log (MAMA_LOG_LEVEL_ERROR, 
                  "Could not create dictionary subscription");
        exit (1);
    }

    /* Create the Dictionary Object */
    mamaDictionary_create           (&gDictionary);
    mamaDictionary_populateFromFile (gDictionary, gDictionaryFile);

    /* Create Dictionary Response Message */
    status = mamaDictionary_getDictionaryMessage (gDictionary,
                                                  &gDictionaryMessage);
    if (MAMA_STATUS_OK != status)
    {
        mama_log (MAMA_LOG_LEVEL_ERROR,
                  "Failed to allocate dictionary message.");
        exit (1);
    }

    /* Build dictionary publisher */
    status = mamaPublisher_create (&gDictionaryPublisher,
                                   gPubTransport,
                                   "WOMBAT.DATA_DICT",
                                   NULL, 
                                   NULL);

    if (MAMA_STATUS_OK != status)
    {
        mama_log (MAMA_LOG_LEVEL_ERROR,
                  "Failed to create dictionary publisher.");
        exit (1);
    }

    status = mamaMsg_updateU8 (gDictionaryMessage,
                               MamaFieldMsgType.mName,
                               MamaFieldMsgType.mFid,
                               MAMA_MSG_TYPE_INITIAL);

    if (MAMA_STATUS_OK != status)
    {
        mama_log (MAMA_LOG_LEVEL_ERROR,
                  "Failed to update dictionary message.");
        exit (1);
    }
}