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  }