From cfe1c0942e718ea29c80d1cc4fb435dce043cfe3 Mon Sep 17 00:00:00 2001 From: Neil-Jocelyn Schark <neil-jocelyn.schark@stud.h-da.de> Date: Wed, 1 Jun 2022 11:30:36 +0000 Subject: [PATCH] Fix Update for devices does not work as expected for file store system See merge request danet/gosdn!325 --- controller/nucleus/deviceFilesystemStore.go | 5 +- .../nucleus/deviceFilesystemStore_test.go | 49 +++++++++++++++++-- 2 files changed, 49 insertions(+), 5 deletions(-) diff --git a/controller/nucleus/deviceFilesystemStore.go b/controller/nucleus/deviceFilesystemStore.go index 47d90d55a..3f1bf140f 100644 --- a/controller/nucleus/deviceFilesystemStore.go +++ b/controller/nucleus/deviceFilesystemStore.go @@ -125,7 +125,7 @@ func (s *FilesystemDeviceStore) Update(deviceToUpdate device.Device) error { s.fileMutex.Lock() defer s.fileMutex.Unlock() - var loadedDevice device.LoadedDevice + loadedDeviceToUpdate, err := store.TransformObjectToLoadedObject[device.Device, device.LoadedDevice](deviceToUpdate) devices, err := s.readAllDevicesFromFile() if err != nil { @@ -134,11 +134,12 @@ func (s *FilesystemDeviceStore) Update(deviceToUpdate device.Device) error { for i, device := range devices { if device.ID == deviceToUpdate.ID().String() { - devices[i] = loadedDevice + devices[i] = loadedDeviceToUpdate err = s.writeAllDevicesToFile(devices) if err != nil { return err } + return nil } } diff --git a/controller/nucleus/deviceFilesystemStore_test.go b/controller/nucleus/deviceFilesystemStore_test.go index 6534627b1..e3179ad31 100644 --- a/controller/nucleus/deviceFilesystemStore_test.go +++ b/controller/nucleus/deviceFilesystemStore_test.go @@ -54,11 +54,12 @@ func TestAddDevice(t *testing.T) { pndID, _ := uuid.Parse("b4016412-eec5-45a1-aa29-f59915357bad") deviceID, _ := uuid.Parse("aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa") sbiID1, _ := uuid.Parse("aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa") + trop := returnBasicTransportOption() sbi1, _ := NewSBI(spb.Type_TYPE_OPENCONFIG, sbiID1) deviceStore := NewDeviceStore(pndID) - device, _ := NewDevice("testdevice", deviceID, nil, sbi1) + device, _ := NewDevice("testdevice", deviceID, &trop, sbi1) err := deviceStore.Add(device) if err != nil { @@ -160,10 +161,52 @@ func TestGetDevice(t *testing.T) { } if returnDevice.ID != inputDevices[1].ID().String() { - t.Errorf("GetAll() = %v, want %v", returnDevice.ID, inputDevices[1].ID().String()) + t.Errorf("Get() = %v, want %v", returnDevice.ID, inputDevices[1].ID().String()) } if returnDevice.Name != inputDevices[1].Name() { - t.Errorf("GetAll() = %v, want %v", returnDevice.Name, inputDevices[1].Name()) + t.Errorf("Get() = %v, want %v", returnDevice.Name, inputDevices[1].Name()) + } +} + +func TestUpdateDevice(t *testing.T) { + ensureDeviceFilesForTestAreRemoved() + defer ensureDeviceFilesForTestAreRemoved() + + pndID, _ := uuid.Parse("b4016412-eec5-45a1-aa29-f59915357bad") + deviceID, _ := uuid.Parse("aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa") + sbiID1, _ := uuid.Parse("aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa") + + trop := returnBasicTransportOption() + + updatedDeviceName := "testdevice2" + + sbi1, _ := NewSBI(spb.Type_TYPE_OPENCONFIG, sbiID1) + + deviceStore := NewDeviceStore(pndID) + device, _ := NewDevice("testdevice", deviceID, &trop, sbi1) + + err := deviceStore.Add(device) + if err != nil { + t.Error(err) + } + + device, _ = NewDevice(updatedDeviceName, deviceID, &trop, sbi1) + + err = deviceStore.Update(device) + if err != nil { + t.Error(err) + } + + returnDevice, err := deviceStore.Get(store.Query{ID: deviceID, Name: updatedDeviceName}) + if err != nil { + t.Error(err) + } + + if returnDevice.ID != deviceID.String() { + t.Errorf("Get() = %v, want %v", returnDevice.ID, deviceID.String()) + } + if returnDevice.Name != updatedDeviceName { + t.Errorf("Get() = %v, want %v", returnDevice.Name, updatedDeviceName) } } -- GitLab