From 27a94a807e16876de7be8efc049af2c922e2af34 Mon Sep 17 00:00:00 2001 From: Patrick J Cherry Date: Fri, 16 Feb 2018 13:46:31 +0000 Subject: [PATCH] Remove the test_gets_num_clients test from the C unit tests This test was causing problems by using dummy pointers to simulate connections. When calling the cleanup code, these pointers were thought to be real, and the code attemtped to clean up threads referenced by those pointers, causing a segfault. I've reimplemented the test in the ruby acceptance suite. --- tests/acceptance/test_serve_mode.rb | 17 ++++++++++------- tests/unit/check_status.c | 19 ------------------- 2 files changed, 10 insertions(+), 26 deletions(-) diff --git a/tests/acceptance/test_serve_mode.rb b/tests/acceptance/test_serve_mode.rb index 5bc3eb5..ddeb836 100644 --- a/tests/acceptance/test_serve_mode.rb +++ b/tests/acceptance/test_serve_mode.rb @@ -209,12 +209,15 @@ class TestServeMode < Test::Unit::TestCase end def test_status_returns_correct_client_count - require 'pp' - connect_to_server do |client| - status = @env.status1 - assert_equal('1', status['num_clients']) - end - status = @env.status1 - assert_equal('0', status['num_clients']) + @env.writefile1('0') + @env.serve1 + assert_equal('0', @env.status1['num_clients']) + client = FlexNBD::FakeSource.new(@env.ip, @env.port1, 'Connecting to server failed') + assert_equal('1', @env.status1['num_clients']) + client2 = FlexNBD::FakeSource.new(@env.ip, @env.port1, 'Connecting to server failed') + assert_equal('2', @env.status1['num_clients']) + client2.close + client.close + assert_equal('0', @env.status1['num_clients']) end end diff --git a/tests/unit/check_status.c b/tests/unit/check_status.c index 1daf556..1a7962b 100644 --- a/tests/unit/check_status.c +++ b/tests/unit/check_status.c @@ -105,25 +105,6 @@ START_TEST( test_gets_clients_allowed ) } END_TEST -START_TEST( test_gets_num_clients ) -{ - struct server * server = mock_server(); - struct status * status = status_create( server ); - - fail_if( status->num_clients != 0, "num_clients was wrong" ); - status_destroy( status ); - - server->nbd_client[0].thread = 1; - server->nbd_client[1].thread = 1; - status = status_create( server ); - - fail_unless( status->num_clients == 2, "num_clients was wrong" ); - status_destroy( status ); - destroy_mock_server( server ); - -} -END_TEST - START_TEST( test_gets_pid ) { struct server * server = mock_server();