Example #1
0
static void append_ie(struct ast_str **str, const struct ast_event *event,
                      const enum ast_event_ie_type ie_type, enum ie_required required)
{
    if (!required && !ie_is_present(event, ie_type)) {
        /* Optional IE isn't present.  Ignore. */
        return;
    }

    /* At this point, it _better_ be there! */
    ast_assert(ie_is_present(event, ie_type));

    switch (ast_event_get_ie_pltype(ie_type)) {
    case AST_EVENT_IE_PLTYPE_UINT:
        ast_str_append(str, 0, ",%s=\"%u\"",
                       ast_event_get_ie_type_name(ie_type),
                       ast_event_get_ie_uint(event, ie_type));
        break;
    case AST_EVENT_IE_PLTYPE_STR:
        ast_str_append(str, 0, ",%s=\"%s\"",
                       ast_event_get_ie_type_name(ie_type),
                       ast_event_get_ie_str(event, ie_type));
        break;
    case AST_EVENT_IE_PLTYPE_BITFLAGS:
        ast_str_append(str, 0, ",%s=\"%u\"",
                       ast_event_get_ie_type_name(ie_type),
                       ast_event_get_ie_bitflags(event, ie_type));
        break;
    case AST_EVENT_IE_PLTYPE_UNKNOWN:
    case AST_EVENT_IE_PLTYPE_EXISTS:
    case AST_EVENT_IE_PLTYPE_RAW:
        ast_log(LOG_WARNING, "Unexpected payload type for IE '%s'\n",
                ast_event_get_ie_type_name(ie_type));
        break;
    }
}
Example #2
0
static int check_event(struct ast_event *event, struct ast_test *test,
		enum ast_event_type expected_type, const char *type_name,
		const char *str, uint32_t uint, uint32_t bitflags)
{
	enum ast_event_type type;
	const void *foo;

	/* Check #1: Ensure event type is set properly. */
	type = ast_event_get_type(event);
	if (ast_event_get_type(event) != type) {
		ast_test_status_update(test, "Expected event type: '%d', got '%d'\n",
				expected_type, type);
		return -1;
	}

	/* Check #2: Check string representation of event type */
	if (strcmp(type_name, ast_event_get_type_name(event))) {
		ast_test_status_update(test, "Didn't get expected type name: '%s' != '%s'\n",
				type_name, ast_event_get_type_name(event));
		return -1;
	}

	/* Check #3: Check for automatically included EID */
	if (memcmp(&ast_eid_default, ast_event_get_ie_raw(event, AST_EVENT_IE_EID), sizeof(ast_eid_default))) {
		ast_test_status_update(test, "Failed to get EID\n");
		return -1;
	}

	/* Check #4: Check for the string IE */
	if (strcmp(str, ast_event_get_ie_str(event, AST_EVENT_IE_MAILBOX))) {
		ast_test_status_update(test, "Failed to get string IE.\n");
		return -1;
	}

	/* Check #5: Check for the uint IE */
	if (uint != ast_event_get_ie_uint(event, AST_EVENT_IE_NEWMSGS)) {
		ast_test_status_update(test, "Failed to get uint IE.\n");
		return -1;
	}

	/* Check #6: Check for the bitflags IE */
	if (bitflags != ast_event_get_ie_bitflags(event, AST_EVENT_IE_OLDMSGS)) {
		ast_test_status_update(test, "Failed to get bitflags IE.\n");
		return -1;
	}

	/* Check #7: Check if a check for a str IE that isn't there works */
	if ((foo = ast_event_get_ie_str(event, AST_EVENT_IE_DEVICE))) {
		ast_test_status_update(test, "DEVICE IE check returned non-NULL %p\n", foo);
		return -1;
	}

	/* Check #8: Check if a check for a uint IE that isn't there returns 0 */
	if (ast_event_get_ie_uint(event, AST_EVENT_IE_STATE)) {
		ast_test_status_update(test, "OLDMSGS IE should be 0\n");
		return -1;
	}

	ast_test_status_update(test, "Event looks good.\n");

	return 0;
}