devmapper_test.go 6.3 KB

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