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 0000000000000000000000000000000000000000..4e305ea3e7077135002a2403603c078678a4bd76 --- /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 19d70f940d94a86d8ac9cec30848accacadf12e9..94fdf49f6057390156cd8656feb93ce5ab4ea6f8 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 49010054bd85f9d34de110e08c680505df97dde4..5ac71bca05115779607015c7c1c604c996c20515 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 d1c9957df9504d5ad8deb6b6bc37c4136edc16ef..3a7243782c43ca7e5aaae7c7a98f638c547c7ae3 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 13b0103306968508b6c3141de9733d9d3cea7066..b5b8ce09d63d139fb78f9f3e1de62638bdd179e7 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 0000000000000000000000000000000000000000..c2728623d93b161305d5f9285cea9af751350466 --- /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 147c1ff90376ac630f69b3f076d21684e320bcf0..47cfa6155ae160183947d2534036280e8edccc4a 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