github.com/openebs/node-disk-manager@v1.9.1-0.20230225014141-4531f06ffa1e/pkg/udev/monitor_test.go (about) 1 /* 2 Copyright 2018 OpenEBS Authors. 3 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 you may not use this file except in compliance with the License. 6 You may obtain a copy of the License at 7 8 http://www.apache.org/licenses/LICENSE-2.0 9 10 Unless required by applicable law or agreed to in writing, software 11 distributed under the License is distributed on an "AS IS" BASIS, 12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 See the License for the specific language governing permissions and 14 limitations under the License. 15 */ 16 17 package udev 18 19 import ( 20 "errors" 21 "testing" 22 23 "github.com/stretchr/testify/assert" 24 ) 25 26 func TestNewDeviceFromNetlink(t *testing.T) { 27 udev, err := NewUdev() 28 if err != nil { 29 t.Error(err) 30 } 31 defer udev.UnrefUdev() 32 // For valid monitor source NewUdeviceMon() should return monitor device pointer and nil error. 33 udevMonitor, err := udev.NewDeviceFromNetlink("udev") 34 if err != nil { 35 t.Fatal(err) 36 } 37 defer udevMonitor.UdevMonitorUnref() 38 // For invalid monitor source NewUdeviceMon() should return nil monitor device pointer and error. 39 _, err = udev.NewDeviceFromNetlink("block") 40 if err != nil { 41 assert.Equal(t, errors.New("unable to create Udevenumerate object for for null struct struct_udev_monitor"), err) 42 } 43 } 44 45 func TestAddFilterSubsystem(t *testing.T) { 46 // for successful AddFilterSubsystem() it should return nil error. 47 udev, err := NewUdev() 48 if err != nil { 49 t.Error(err) 50 } 51 defer udev.UnrefUdev() 52 udevMonitor, err := udev.NewDeviceFromNetlink("udev") 53 if err != nil { 54 t.Fatal(err) 55 } 56 defer udevMonitor.UdevMonitorUnref() 57 assert.Equal(t, nil, udevMonitor.AddSubsystemFilter("block")) 58 } 59 60 func TestEnableMonitorReceiving(t *testing.T) { 61 // for successful EnableMonitorReceiving() it should return nil error. 62 // if we free udevMonitor pointer then it should return an error. 63 udev, err := NewUdev() 64 if err != nil { 65 t.Error(err) 66 } 67 defer udev.UnrefUdev() 68 udevMonitor, err := udev.NewDeviceFromNetlink("udev") 69 if err != nil { 70 t.Fatal(err) 71 } 72 defer udevMonitor.UdevMonitorUnref() 73 err = udevMonitor.EnableReceiving() 74 if err != nil { 75 t.Error("expected nil error") 76 } 77 udevMonitor1, err := udev.NewDeviceFromNetlink("udev") 78 if err != nil { 79 t.Fatal(err) 80 } 81 udevMonitor1.UdevMonitorUnref() 82 err = udevMonitor1.EnableReceiving() 83 assert.Equal(t, errors.New("unable to enable receiving udev"), err) 84 85 } 86 87 func TestGetFd(t *testing.T) { 88 // for successful TestGetFd() it should return nil error 89 // and fd value should be greater than 0. 90 udev, err := NewUdev() 91 if err != nil { 92 t.Error(err) 93 } 94 defer udev.UnrefUdev() 95 udevMonitor, err := udev.NewDeviceFromNetlink("udev") 96 if err != nil { 97 t.Fatal(err) 98 } 99 defer udevMonitor.UdevMonitorUnref() 100 fd, err := udevMonitor.GetFd() 101 if fd <= 0 { 102 t.Error("fd value should be greater than 0") 103 } 104 assert.Equal(t, nil, err) 105 } 106 107 func TestUdevMonitorNewDevice(t *testing.T) { 108 udev, err := NewUdev() 109 if err != nil { 110 t.Error(err) 111 } 112 defer udev.UnrefUdev() 113 udevMonitor, err := udev.NewDeviceFromNetlink("udev") 114 if err != nil { 115 t.Fatal(err) 116 } 117 defer udevMonitor.UdevMonitorUnref() 118 _, err = udevMonitor.ReceiveDevice() 119 if err != nil { 120 assert.Equal(t, errors.New("unable to create Udevice object for null struct struct_udev_device"), err) 121 } 122 }