devmapper_test.go 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287
  1. // +build linux,amd64
  2. package devmapper
  3. import (
  4. "testing"
  5. )
  6. func TestTaskCreate(t *testing.T) {
  7. t.Skip("FIXME: not a unit test")
  8. // Test success
  9. taskCreate(t, DeviceInfo)
  10. // Test Failure
  11. DmTaskCreate = dmTaskCreateFail
  12. defer func() { DmTaskCreate = dmTaskCreateFct }()
  13. if task := TaskCreate(-1); task != nil {
  14. t.Fatalf("An error should have occured while creating an invalid task.")
  15. }
  16. }
  17. func TestTaskRun(t *testing.T) {
  18. t.Skip("FIXME: not a unit test")
  19. task := taskCreate(t, DeviceInfo)
  20. // Test success
  21. // Perform the RUN
  22. if err := task.Run(); err != nil {
  23. t.Fatal(err)
  24. }
  25. // Make sure we don't have error with GetInfo
  26. if _, err := task.GetInfo(); err != nil {
  27. t.Fatal(err)
  28. }
  29. // Test failure
  30. DmTaskRun = dmTaskRunFail
  31. defer func() { DmTaskRun = dmTaskRunFct }()
  32. task = taskCreate(t, DeviceInfo)
  33. // Perform the RUN
  34. if err := task.Run(); err != ErrTaskRun {
  35. t.Fatalf("An error should have occured while running task.")
  36. }
  37. // Make sure GetInfo also fails
  38. if _, err := task.GetInfo(); err != ErrTaskGetInfo {
  39. t.Fatalf("GetInfo should fail if task.Run() failed.")
  40. }
  41. }
  42. func TestTaskSetName(t *testing.T) {
  43. t.Skip("FIXME: not a unit test")
  44. task := taskCreate(t, DeviceInfo)
  45. // Test success
  46. if err := task.SetName("test"); err != nil {
  47. t.Fatal(err)
  48. }
  49. // Test failure
  50. DmTaskSetName = dmTaskSetNameFail
  51. defer func() { DmTaskSetName = dmTaskSetNameFct }()
  52. if err := task.SetName("test"); err != ErrTaskSetName {
  53. t.Fatalf("An error should have occured while runnign SetName.")
  54. }
  55. }
  56. func TestTaskSetMessage(t *testing.T) {
  57. t.Skip("FIXME: not a unit test")
  58. task := taskCreate(t, DeviceInfo)
  59. // Test success
  60. if err := task.SetMessage("test"); err != nil {
  61. t.Fatal(err)
  62. }
  63. // Test failure
  64. DmTaskSetMessage = dmTaskSetMessageFail
  65. defer func() { DmTaskSetMessage = dmTaskSetMessageFct }()
  66. if err := task.SetMessage("test"); err != ErrTaskSetMessage {
  67. t.Fatalf("An error should have occured while runnign SetMessage.")
  68. }
  69. }
  70. func TestTaskSetSector(t *testing.T) {
  71. t.Skip("FIXME: not a unit test")
  72. task := taskCreate(t, DeviceInfo)
  73. // Test success
  74. if err := task.SetSector(128); err != nil {
  75. t.Fatal(err)
  76. }
  77. DmTaskSetSector = dmTaskSetSectorFail
  78. defer func() { DmTaskSetSector = dmTaskSetSectorFct }()
  79. // Test failure
  80. if err := task.SetSector(0); err != ErrTaskSetSector {
  81. t.Fatalf("An error should have occured while running SetSector.")
  82. }
  83. }
  84. func TestTaskSetCookie(t *testing.T) {
  85. t.Skip("FIXME: not a unit test")
  86. var (
  87. cookie uint = 0
  88. task = taskCreate(t, DeviceInfo)
  89. )
  90. // Test success
  91. if err := task.SetCookie(&cookie, 0); err != nil {
  92. t.Fatal(err)
  93. }
  94. // Test failure
  95. if err := task.SetCookie(nil, 0); err != ErrNilCookie {
  96. t.Fatalf("An error should have occured while running SetCookie with nil cookie.")
  97. }
  98. DmTaskSetCookie = dmTaskSetCookieFail
  99. defer func() { DmTaskSetCookie = dmTaskSetCookieFct }()
  100. if err := task.SetCookie(&cookie, 0); err != ErrTaskSetCookie {
  101. t.Fatalf("An error should have occured while running SetCookie.")
  102. }
  103. }
  104. func TestTaskSetAddNode(t *testing.T) {
  105. t.Skip("FIXME: not a unit test")
  106. task := taskCreate(t, DeviceInfo)
  107. // Test success
  108. if err := task.SetAddNode(0); err != nil {
  109. t.Fatal(err)
  110. }
  111. // Test failure
  112. if err := task.SetAddNode(-1); err != ErrInvalidAddNode {
  113. t.Fatalf("An error should have occured running SetAddNode with wrong node.")
  114. }
  115. DmTaskSetAddNode = dmTaskSetAddNodeFail
  116. defer func() { DmTaskSetAddNode = dmTaskSetAddNodeFct }()
  117. if err := task.SetAddNode(0); err != ErrTaskSetAddNode {
  118. t.Fatalf("An error should have occured running SetAddNode.")
  119. }
  120. }
  121. func TestTaskSetRo(t *testing.T) {
  122. t.Skip("FIXME: not a unit test")
  123. task := taskCreate(t, DeviceInfo)
  124. // Test success
  125. if err := task.SetRo(); err != nil {
  126. t.Fatal(err)
  127. }
  128. // Test failure
  129. DmTaskSetRo = dmTaskSetRoFail
  130. defer func() { DmTaskSetRo = dmTaskSetRoFct }()
  131. if err := task.SetRo(); err != ErrTaskSetRo {
  132. t.Fatalf("An error should have occured running SetRo.")
  133. }
  134. }
  135. func TestTaskAddTarget(t *testing.T) {
  136. t.Skip("FIXME: not a unit test")
  137. task := taskCreate(t, DeviceInfo)
  138. // Test success
  139. if err := task.AddTarget(0, 128, "thinp", ""); err != nil {
  140. t.Fatal(err)
  141. }
  142. // Test failure
  143. DmTaskAddTarget = dmTaskAddTargetFail
  144. defer func() { DmTaskAddTarget = dmTaskAddTargetFct }()
  145. if err := task.AddTarget(0, 128, "thinp", ""); err != ErrTaskAddTarget {
  146. t.Fatalf("An error should have occured running AddTarget.")
  147. }
  148. }
  149. // func TestTaskGetInfo(t *testing.T) {
  150. // task := taskCreate(t, DeviceInfo)
  151. // // Test success
  152. // if _, err := task.GetInfo(); err != nil {
  153. // t.Fatal(err)
  154. // }
  155. // // Test failure
  156. // DmTaskGetInfo = dmTaskGetInfoFail
  157. // defer func() { DmTaskGetInfo = dmTaskGetInfoFct }()
  158. // if _, err := task.GetInfo(); err != ErrTaskGetInfo {
  159. // t.Fatalf("An error should have occured running GetInfo.")
  160. // }
  161. // }
  162. // func TestTaskGetNextTarget(t *testing.T) {
  163. // task := taskCreate(t, DeviceInfo)
  164. // if next, _, _, _, _ := task.GetNextTarget(0); next == 0 {
  165. // t.Fatalf("The next target should not be 0.")
  166. // }
  167. // }
  168. /// Utils
  169. func taskCreate(t *testing.T, taskType TaskType) *Task {
  170. task := TaskCreate(taskType)
  171. if task == nil {
  172. t.Fatalf("Error creating task")
  173. }
  174. return task
  175. }
  176. /// Failure function replacement
  177. func dmTaskCreateFail(t int) *CDmTask {
  178. return nil
  179. }
  180. func dmTaskRunFail(task *CDmTask) int {
  181. return -1
  182. }
  183. func dmTaskSetNameFail(task *CDmTask, name string) int {
  184. return -1
  185. }
  186. func dmTaskSetMessageFail(task *CDmTask, message string) int {
  187. return -1
  188. }
  189. func dmTaskSetSectorFail(task *CDmTask, sector uint64) int {
  190. return -1
  191. }
  192. func dmTaskSetCookieFail(task *CDmTask, cookie *uint, flags uint16) int {
  193. return -1
  194. }
  195. func dmTaskSetAddNodeFail(task *CDmTask, addNode AddNodeType) int {
  196. return -1
  197. }
  198. func dmTaskSetRoFail(task *CDmTask) int {
  199. return -1
  200. }
  201. func dmTaskAddTargetFail(task *CDmTask,
  202. start, size uint64, ttype, params string) int {
  203. return -1
  204. }
  205. func dmTaskGetInfoFail(task *CDmTask, info *Info) int {
  206. return -1
  207. }
  208. func dmGetNextTargetFail(task *CDmTask, next uintptr, start, length *uint64,
  209. target, params *string) uintptr {
  210. return 0
  211. }
  212. func dmAttachLoopDeviceFail(filename string, fd *int) string {
  213. return ""
  214. }
  215. func sysGetBlockSizeFail(fd uintptr, size *uint64) sysErrno {
  216. return 1
  217. }
  218. func dmUdevWaitFail(cookie uint) int {
  219. return -1
  220. }
  221. func dmSetDevDirFail(dir string) int {
  222. return -1
  223. }
  224. func dmGetLibraryVersionFail(version *string) int {
  225. return -1
  226. }