Skip to content
Snippets Groups Projects
test_stasis.c 73.1 KiB
Newer Older
  • Learn to ignore specific revisions
  • {
    	RAII_VAR(struct stasis_topic *, topic, NULL, ao2_cleanup);
    	RAII_VAR(struct stasis_cache *, cache, NULL, ao2_cleanup);
    	RAII_VAR(struct stasis_caching_topic *, caching_topic, NULL,
    		stasis_caching_unsubscribe);
    	RAII_VAR(struct stasis_subscription *, sub, NULL, stasis_unsubscribe);
    
    	switch (cmd) {
    	case TEST_INIT:
    		info->name = __func__;
    		info->category = test_category;
    		info->summary = "Test that destruction order doesn't bomb stuff";
    		info->description = "Test that destruction order doesn't bomb stuff";
    		return AST_TEST_NOT_RUN;
    	case TEST_EXECUTE:
    		break;
    	}
    
    	cache = stasis_cache_create(noop_get_id);
    	ast_test_validate(test, NULL != cache);
    
    	topic = stasis_topic_create("test-topic");
    	ast_test_validate(test, NULL != topic);
    
    	caching_topic = stasis_caching_topic_create(topic, cache);
    	ast_test_validate(test, NULL != caching_topic);
    
    	sub = stasis_subscribe(stasis_caching_get_topic(caching_topic), noop,
    		NULL);
    	ast_test_validate(test, NULL != sub);
    
    	/* With any luck, this won't completely blow everything up */
    	ao2_cleanup(cache);
    	ao2_cleanup(topic);
    	stasis_caching_unsubscribe(caching_topic);
    	stasis_unsubscribe(sub);
    
    	/* These refs were cleaned up manually */
    	cache = NULL;
    	topic = NULL;
    	caching_topic = NULL;
    	sub = NULL;
    
    	return AST_TEST_PASS;
    }
    
    
    static int unload_module(void)
    {
    	AST_TEST_UNREGISTER(message_type);
    	AST_TEST_UNREGISTER(message);
    	AST_TEST_UNREGISTER(subscription_messages);
    
    	AST_TEST_UNREGISTER(subscription_pool_messages);
    
    	AST_TEST_UNREGISTER(publish);
    
    	AST_TEST_UNREGISTER(publish_sync);
    
    	AST_TEST_UNREGISTER(unsubscribe_stops_messages);
    	AST_TEST_UNREGISTER(forward);
    
    	AST_TEST_UNREGISTER(cache_filter);
    
    	AST_TEST_UNREGISTER(cache);
    
    	AST_TEST_UNREGISTER(cache_dump);
    
    	AST_TEST_UNREGISTER(cache_eid_aggregate);
    
    	AST_TEST_UNREGISTER(router);
    
    	AST_TEST_UNREGISTER(router_cache_updates);
    
    	AST_TEST_UNREGISTER(interleaving);
    
    	AST_TEST_UNREGISTER(subscription_interleaving);
    
    	AST_TEST_UNREGISTER(no_to_json);
    	AST_TEST_UNREGISTER(to_json);
    	AST_TEST_UNREGISTER(no_to_ami);
    	AST_TEST_UNREGISTER(to_ami);
    
    	AST_TEST_UNREGISTER(dtor_order);
    	AST_TEST_UNREGISTER(caching_dtor_order);
    
    	return 0;
    }
    
    static int load_module(void)
    {
    	AST_TEST_REGISTER(message_type);
    	AST_TEST_REGISTER(message);
    	AST_TEST_REGISTER(subscription_messages);
    
    	AST_TEST_REGISTER(subscription_pool_messages);
    
    	AST_TEST_REGISTER(publish);
    
    	AST_TEST_REGISTER(unsubscribe_stops_messages);
    	AST_TEST_REGISTER(forward);
    
    	AST_TEST_REGISTER(cache_filter);
    
    	AST_TEST_REGISTER(cache);
    
    	AST_TEST_REGISTER(cache_dump);
    
    	AST_TEST_REGISTER(cache_eid_aggregate);
    
    	AST_TEST_REGISTER(router);
    
    	AST_TEST_REGISTER(router_cache_updates);
    
    	AST_TEST_REGISTER(interleaving);
    
    	AST_TEST_REGISTER(subscription_interleaving);
    
    	AST_TEST_REGISTER(no_to_json);
    	AST_TEST_REGISTER(to_json);
    	AST_TEST_REGISTER(no_to_ami);
    	AST_TEST_REGISTER(to_ami);
    
    	AST_TEST_REGISTER(dtor_order);
    	AST_TEST_REGISTER(caching_dtor_order);
    
    	return AST_MODULE_LOAD_SUCCESS;
    }
    
    AST_MODULE_INFO(ASTERISK_GPL_KEY, 0, "Stasis testing",