Add super stream creation/deletion test
This commit is contained in:
		
							parent
							
								
									c352eed64a
								
							
						
					
					
						commit
						043ddcba95
					
				| 
						 | 
				
			
			@ -26,6 +26,8 @@
 | 
			
		|||
-compile(nowarn_export_all).
 | 
			
		||||
-compile(export_all).
 | 
			
		||||
 | 
			
		||||
-import(rabbit_stream_core, [frame/1]).
 | 
			
		||||
 | 
			
		||||
-define(WAIT, 5000).
 | 
			
		||||
 | 
			
		||||
all() ->
 | 
			
		||||
| 
						 | 
				
			
			@ -37,6 +39,7 @@ groups() ->
 | 
			
		|||
       test_stream,
 | 
			
		||||
       test_stream_tls,
 | 
			
		||||
       test_publish_v2,
 | 
			
		||||
       test_super_stream_creation_deletion,
 | 
			
		||||
       test_gc_consumers,
 | 
			
		||||
       test_gc_publishers,
 | 
			
		||||
       test_update_secret,
 | 
			
		||||
| 
						 | 
				
			
			@ -306,6 +309,54 @@ test_publish_v2(Config) ->
 | 
			
		|||
    closed = wait_for_socket_close(Transport, S, 10),
 | 
			
		||||
    ok.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
test_super_stream_creation_deletion(Config) ->
 | 
			
		||||
    T = gen_tcp,
 | 
			
		||||
    Port = get_port(T, Config),
 | 
			
		||||
    Opts = get_opts(T),
 | 
			
		||||
    {ok, S} = T:connect("localhost", Port, Opts),
 | 
			
		||||
    C = rabbit_stream_core:init(0),
 | 
			
		||||
    test_peer_properties(T, S, C),
 | 
			
		||||
    test_authenticate(T, S, C),
 | 
			
		||||
 | 
			
		||||
    Ss = atom_to_binary(?FUNCTION_NAME, utf8),
 | 
			
		||||
    Partitions = [unicode:characters_to_binary([Ss, <<"-">>, integer_to_binary(N)]) || N <- lists:seq(0, 2)],
 | 
			
		||||
    Rks = [integer_to_binary(N) || N <- lists:seq(0, 2)],
 | 
			
		||||
    SsCreationFrame = frame({request, 1, {create_super_stream, Ss, Partitions, Rks, #{}}}),
 | 
			
		||||
    ok = T:send(S, SsCreationFrame),
 | 
			
		||||
    {Cmd1, _} = receive_commands(T, S, C),
 | 
			
		||||
    ?assertMatch({response, 1, {create_super_stream, ?RESPONSE_CODE_OK}},
 | 
			
		||||
                 Cmd1),
 | 
			
		||||
 | 
			
		||||
    PartitionsFrame = frame({request, 1, {partitions, Ss}}),
 | 
			
		||||
    ok = T:send(S, PartitionsFrame),
 | 
			
		||||
    {Cmd2, _} = receive_commands(T, S, C),
 | 
			
		||||
    ?assertMatch({response, 1, {partitions, ?RESPONSE_CODE_OK, Partitions}},
 | 
			
		||||
                  Cmd2),
 | 
			
		||||
    [begin
 | 
			
		||||
         RouteFrame = frame({request, 1, {route, Rk, Ss}}),
 | 
			
		||||
         ok = T:send(S, RouteFrame),
 | 
			
		||||
         {Command, _} = receive_commands(T, S, C),
 | 
			
		||||
         ?assertMatch({response, 1, {route, ?RESPONSE_CODE_OK, _}}, Command),
 | 
			
		||||
         {response, 1, {route, ?RESPONSE_CODE_OK, [P]}} = Command,
 | 
			
		||||
         ?assertEqual(unicode:characters_to_binary([Ss, <<"-">>, Rk]), P)
 | 
			
		||||
     end || Rk <- Rks],
 | 
			
		||||
 | 
			
		||||
    SsDeletionFrame = frame({request, 1, {delete_super_stream, Ss}}),
 | 
			
		||||
    ok = T:send(S, SsDeletionFrame),
 | 
			
		||||
    {Cmd3, _} = receive_commands(T, S, C),
 | 
			
		||||
    ?assertMatch({response, 1, {delete_super_stream, ?RESPONSE_CODE_OK}},
 | 
			
		||||
                 Cmd3),
 | 
			
		||||
 | 
			
		||||
    ok = T:send(S, PartitionsFrame),
 | 
			
		||||
    {Cmd4, _} = receive_commands(T, S, C),
 | 
			
		||||
    ?assertMatch({response, 1, {partitions, ?RESPONSE_CODE_STREAM_DOES_NOT_EXIST, []}},
 | 
			
		||||
                  Cmd4),
 | 
			
		||||
 | 
			
		||||
    test_close(T, S, C),
 | 
			
		||||
    closed = wait_for_socket_close(T, S, 10),
 | 
			
		||||
    ok.
 | 
			
		||||
 | 
			
		||||
test_metadata(Config) ->
 | 
			
		||||
    Stream = atom_to_binary(?FUNCTION_NAME, utf8),
 | 
			
		||||
    Transport = gen_tcp,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue