From 18eef19c96debc8d801cc0c38c8c79ceb5d25d1b Mon Sep 17 00:00:00 2001 From: Sergey Yakubov <sergey.yakubov@desy.de> Date: Mon, 23 Nov 2020 11:22:15 +0100 Subject: [PATCH] improve go code coverage --- .../src/asapo_broker/server/get_meta_test.go | 41 +++++++++++++++++++ .../asapo_broker/server/post_op_image_test.go | 13 ++++++ .../server/post_query_images_test.go | 1 + broker/src/asapo_broker/server/server_test.go | 7 ++++ broker/src/asapo_broker/server/statistics.go | 12 ------ .../server/statistics_nottested.go | 19 +++++++++ .../asapo_broker/server/statistics_test.go | 25 ++++++++++- 7 files changed, 104 insertions(+), 14 deletions(-) create mode 100644 broker/src/asapo_broker/server/get_meta_test.go create mode 100644 broker/src/asapo_broker/server/statistics_nottested.go diff --git a/broker/src/asapo_broker/server/get_meta_test.go b/broker/src/asapo_broker/server/get_meta_test.go new file mode 100644 index 000000000..4e305ea3e --- /dev/null +++ b/broker/src/asapo_broker/server/get_meta_test.go @@ -0,0 +1,41 @@ +package server + +import ( + "asapo_broker/database" + "asapo_common/logger" + "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/suite" + "net/http" + "testing" +) + +type GetMetaTestSuite struct { + suite.Suite + mock_db *database.MockedDatabase +} + +func (suite *GetMetaTestSuite) SetupTest() { + statistics.Reset() + suite.mock_db = new(database.MockedDatabase) + db = suite.mock_db + prepareTestAuth() + logger.SetMockLog() +} + +func (suite *GetMetaTestSuite) TearDownTest() { + assertExpectations(suite.T(), suite.mock_db) + logger.UnsetMockLog() + db = nil +} + +func TestGetMetaTestSuite(t *testing.T) { + suite.Run(t, new(GetMetaTestSuite)) +} + +func (suite *GetMetaTestSuite) TestGetMetaOK() { + suite.mock_db.On("ProcessRequest", database.Request{DbName: expectedDBName, DbCollectionName: expectedSubstream, Op: "meta", ExtraParam: "1"}).Return([]byte(""), nil) + logger.MockLog.On("Debug", mock.MatchedBy(containsMatcher("processing request meta"))) + w := doRequest("/database/" + expectedBeamtimeId + "/" + expectedStream + "/" + expectedSubstream + "/0/meta" + "/1" + correctTokenSuffix,"GET") + suite.Equal(http.StatusOK, w.Code, "meta OK") +} + diff --git a/broker/src/asapo_broker/server/post_op_image_test.go b/broker/src/asapo_broker/server/post_op_image_test.go index 19d70f940..94fdf49f6 100644 --- a/broker/src/asapo_broker/server/post_op_image_test.go +++ b/broker/src/asapo_broker/server/post_op_image_test.go @@ -39,3 +39,16 @@ func (suite *ImageOpTestSuite) TestAckImageOpOK() { w := doRequest("/database/" + expectedBeamtimeId + "/" + expectedStream + "/" + expectedSubstream + "/" + expectedGroupID + "/1" + correctTokenSuffix,"POST",query_str) suite.Equal(http.StatusOK, w.Code, "ackimage OK") } + + +func (suite *ImageOpTestSuite) TestAckImageOpErrorWrongOp() { + query_str := "\"Id\":1,\"Op\":\"ackimage\"}" + w := doRequest("/database/" + expectedBeamtimeId + "/" + expectedStream + "/" + expectedSubstream + "/" + expectedGroupID + "/1" + correctTokenSuffix,"POST",query_str) + suite.Equal(http.StatusBadRequest, w.Code, "ackimage wrong") +} + +func (suite *ImageOpTestSuite) TestAckImageOpErrorWrongID() { + query_str := "{\"Id\":1,\"Op\":\"ackimage\"}" + w := doRequest("/database/" + expectedBeamtimeId + "/" + expectedStream + "/" + expectedSubstream + "/" + expectedGroupID + "/bla" + correctTokenSuffix,"POST",query_str) + suite.Equal(http.StatusBadRequest, w.Code, "ackimage wrong") +} diff --git a/broker/src/asapo_broker/server/post_query_images_test.go b/broker/src/asapo_broker/server/post_query_images_test.go index 49010054b..5ac71bca0 100644 --- a/broker/src/asapo_broker/server/post_query_images_test.go +++ b/broker/src/asapo_broker/server/post_query_images_test.go @@ -41,3 +41,4 @@ func (suite *QueryTestSuite) TestQueryOK() { w := doRequest("/database/"+expectedBeamtimeId+"/"+expectedStream+"/"+expectedSubstream+"/0/queryimages"+correctTokenSuffix, "POST", query_str) suite.Equal(http.StatusOK, w.Code, "Query OK") } + diff --git a/broker/src/asapo_broker/server/server_test.go b/broker/src/asapo_broker/server/server_test.go index d1c9957df..3a7243782 100644 --- a/broker/src/asapo_broker/server/server_test.go +++ b/broker/src/asapo_broker/server/server_test.go @@ -117,6 +117,13 @@ func TestReconnectDB(t *testing.T) { db = nil } +func TestErrorWhenReconnectNotConnectedDB(t *testing.T) { + err := ReconnectDb() + assert.NotNil(t, err, "error reconnect") + db = nil +} + + func TestCleanupDBWithoutInit(t *testing.T) { mock_db := setup() diff --git a/broker/src/asapo_broker/server/statistics.go b/broker/src/asapo_broker/server/statistics.go index 13b010330..b5b8ce09d 100644 --- a/broker/src/asapo_broker/server/statistics.go +++ b/broker/src/asapo_broker/server/statistics.go @@ -4,7 +4,6 @@ import ( log "asapo_common/logger" "fmt" "sync" - "time" ) type statisticsWriter interface { @@ -54,14 +53,3 @@ func (st *serverStatistics) WriteStatistic() (err error) { }() return st.Writer.Write(st) } - -func (st *serverStatistics) Monitor() { - for { - time.Sleep(1000 * time.Millisecond) - if err := st.WriteStatistic(); err != nil { - logstr := "sending statistics to " + settings.PerformanceDbServer + ", dbname: " + settings.PerformanceDbName - log.Error(logstr + " - " + err.Error()) - } - st.Reset() - } -} diff --git a/broker/src/asapo_broker/server/statistics_nottested.go b/broker/src/asapo_broker/server/statistics_nottested.go new file mode 100644 index 000000000..c2728623d --- /dev/null +++ b/broker/src/asapo_broker/server/statistics_nottested.go @@ -0,0 +1,19 @@ +//+build !test + +package server + +import ( + log "asapo_common/logger" + "time" +) + +func (st *serverStatistics) Monitor() { + for { + time.Sleep(1000 * time.Millisecond) + if err := st.WriteStatistic(); err != nil { + logstr := "sending statistics to " + settings.PerformanceDbServer + ", dbname: " + settings.PerformanceDbName + log.Error(logstr + " - " + err.Error()) + } + st.Reset() + } +} diff --git a/broker/src/asapo_broker/server/statistics_test.go b/broker/src/asapo_broker/server/statistics_test.go index 147c1ff90..47cfa6155 100644 --- a/broker/src/asapo_broker/server/statistics_test.go +++ b/broker/src/asapo_broker/server/statistics_test.go @@ -1,6 +1,7 @@ package server import ( + "errors" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" "testing" @@ -28,17 +29,37 @@ func assertMockWriterExpectations(t *testing.T, mock_writer *mockWriter) { func TestWriteStatisticsOK(t *testing.T) { mock_writer := new(mockWriter) statistics.Writer = mock_writer - statistics.Reset() - statistics.IncreaseCounter() + mock_writer.On("Init").Return(nil) mock_writer.On("Write", &statistics).Return(nil) + statistics.Init() + statistics.Reset() + statistics.IncreaseCounter() + counter := statistics.GetCounter() + err := statistics.WriteStatistic() assert.Nil(t, err, "Statistics written") + assert.Equal(t, 1, counter, "counter") + + assertMockWriterExpectations(t, mock_writer) +} + +func TestInitError(t *testing.T) { + mock_writer := new(mockWriter) + statistics.Writer = mock_writer + + mock_writer.On("Init").Return(errors.New("error")) + + statistics.Init() + + err := statistics.WriteStatistic() + assert.NotNil(t, err, "Statistics init error") assertMockWriterExpectations(t, mock_writer) } + func TestWriteStatisticsCatchesError(t *testing.T) { statistics.Writer = nil -- GitLab