github.com/rohankumardubey/aresdb@v0.0.2-0.20190517170215-e54e3ca06b9c/api/api_test.go (about) 1 // Copyright (c) 2017-2018 Uber Technologies, Inc. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 package api 16 17 import ( 18 "bytes" 19 "encoding/json" 20 21 "io" 22 23 "fmt" 24 "github.com/stretchr/testify/mock" 25 "github.com/uber/aresdb/diskstore" 26 diskMocks "github.com/uber/aresdb/diskstore/mocks" 27 "github.com/uber/aresdb/memstore" 28 memComMocks "github.com/uber/aresdb/memstore/common/mocks" 29 memMocks "github.com/uber/aresdb/memstore/mocks" 30 "github.com/uber/aresdb/metastore" 31 metaMocks "github.com/uber/aresdb/metastore/mocks" 32 "github.com/uber/aresdb/testing" 33 ) 34 35 // CreateMockDiskStore creates a mocked DiskStore for testing. 36 func CreateMockDiskStore() *diskMocks.DiskStore { 37 diskStore := &diskMocks.DiskStore{} 38 diskStore.On("OpenLogFileForAppend", mock.Anything, mock.Anything, mock.Anything).Return(&testing.TestReadWriteCloser{}, nil) 39 return diskStore 40 } 41 42 // CreateMockMetaStore creates a mocked MetaStore for testing. 43 func CreateMockMetaStore() *metaMocks.MetaStore { 44 metaStore := &metaMocks.MetaStore{} 45 return metaStore 46 } 47 48 // CreateMemStore creates a mocked hostMemoryManager for testing. 49 func CreateMockHostMemoryManger() *memComMocks.HostMemoryManager { 50 hostMemoryManager := &memComMocks.HostMemoryManager{} 51 hostMemoryManager.On("ReportUnmanagedSpaceUsageChange", mock.Anything).Return() 52 hostMemoryManager.On("ReportManagedObject", mock.Anything, mock.Anything, 53 mock.Anything, mock.Anything, mock.Anything).Return() 54 return hostMemoryManager 55 } 56 57 // CreateMemStore creates a mocked MemStore for testing. 58 func CreateMemStore(schema *memstore.TableSchema, shardID int, metaStore metastore.MetaStore, 59 diskStore diskstore.DiskStore) *memMocks.MemStore { 60 shard := memstore.NewTableShard(schema, metaStore, diskStore, CreateMockHostMemoryManger(), shardID) 61 62 memStore := new(memMocks.MemStore) 63 memStore.On("GetTableShard", schema.Schema.Name, shardID).Return(shard, nil). 64 Run(func(arguments mock.Arguments) { 65 shard.Users.Add(1) 66 }) 67 memStore.On("GetSchema", schema.Schema.Name).Return(schema, nil) 68 memStore.On("GetSchema", mock.Anything).Return(nil, fmt.Errorf("some error")) 69 memStore.On("GetSchemas").Return(map[string]*memstore.TableSchema{schema.Schema.Name: schema}) 70 memStore.On("RLock").Return() 71 memStore.On("RUnlock").Return() 72 memStore.On("Lock").Return() 73 memStore.On("Unlock").Return() 74 return memStore 75 } 76 77 // RequestToBody marshals a request struct into json and provide a reader of it. 78 func RequestToBody(request interface{}) io.Reader { 79 b := new(bytes.Buffer) 80 json.NewEncoder(b).Encode(request) 81 return b 82 }