Skip to content
Snippets Groups Projects
Commit a9f0df9c authored by Malte Bauch's avatar Malte Bauch
Browse files

Add deviceServiceMock

parent 51acbed6
No related branches found
No related tags found
2 merge requests!352Draft: Resolve "Structs like LoadedDevice, LoadedSbi, LoadedRole, LoadedUser are never passed as pointer",!347Resolve "Requesting information from the Controller via NBI takes very long"
Pipeline #109341 failed
This commit is part of merge request !347. Comments created here will be created in the context of that merge request.
package nucleus
import (
"code.fbi.h-da.de/danet/gosdn/controller/interfaces/device"
"code.fbi.h-da.de/danet/gosdn/controller/store"
"github.com/google/uuid"
)
// DeviceServiceMock provides a in-memory implementation for multiple stores.
type DeviceServiceMock struct {
Store map[uuid.UUID]device.Device
nameLookupTable map[string]uuid.UUID
}
// NewDeviceServiceMock returns a specific in-memory store for device service.
func NewDeviceServiceMock() device.Service {
return &DeviceServiceMock{
Store: make(map[uuid.UUID]device.Device),
nameLookupTable: make(map[string]uuid.UUID),
}
}
// Add adds a item device.Device
func (t *DeviceServiceMock) Add(item device.Device) error {
_, ok := t.Store[item.ID()]
if ok {
return nil
}
t.Store[item.ID()] = item
t.nameLookupTable[item.Name()] = item.ID()
return nil
}
// Update updates a item device.Device
func (t *DeviceServiceMock) Update(item device.Device) error {
_, ok := t.Store[item.ID()]
if ok {
return nil
}
t.Store[item.ID()] = item
t.nameLookupTable[item.Name()] = item.ID()
return nil
}
// Delete deletes a item device.Device
func (t *DeviceServiceMock) Delete(item device.Device) error {
delete(t.Store, item.ID())
return nil
}
// Get gets a item device.Device
func (t *DeviceServiceMock) Get(query store.Query) (device.Device, error) {
// First search for direct hit on UUID.
item, ok := t.Store[query.ID]
if !ok {
// Second search for name
id, ok := t.nameLookupTable[query.Name]
if !ok {
return nil, nil
}
item, ok := t.Store[id]
if !ok {
return nil, nil
}
return item, nil
}
return item, nil
}
// GetAll gets all items
func (t *DeviceServiceMock) GetAll() ([]device.LoadedDevice, error) {
var allItems []device.LoadedDevice
for _, item := range t.Store {
allItems = append(allItems, device.LoadedDevice{
ID: item.ID().String(),
Name: item.Name(),
SBI: item.SBI().ID().String(),
})
}
return allItems, nil
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment