You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

storage_test.go 6.4 kB

7 months ago
7 months ago
7 months ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283
  1. package api
  2. import (
  3. "bytes"
  4. "fmt"
  5. "io"
  6. "testing"
  7. "github.com/google/uuid"
  8. . "github.com/smartystreets/goconvey/convey"
  9. "gitlink.org.cn/cloudream/common/pkgs/iterator"
  10. clitypes "gitlink.org.cn/cloudream/storage2/client/types"
  11. )
  12. func Test_PackageGet(t *testing.T) {
  13. Convey("上传后获取Package信息", t, func() {
  14. cli := NewClient(&Config{
  15. URL: "http://localhost:7890",
  16. })
  17. fileData := make([]byte, 4096)
  18. for i := 0; i < len(fileData); i++ {
  19. fileData[i] = byte(i)
  20. }
  21. pkgName := uuid.NewString()
  22. createResp, err := cli.Package().Create(PackageCreate{
  23. BucketID: 1,
  24. Name: pkgName,
  25. })
  26. So(err, ShouldBeNil)
  27. _, err = cli.Object().Upload(ObjectUpload{
  28. ObjectUploadInfo: ObjectUploadInfo{
  29. PackageID: createResp.Package.PackageID,
  30. },
  31. Files: iterator.Array(
  32. &UploadingObject{
  33. Path: "abc/test",
  34. File: io.NopCloser(bytes.NewBuffer(fileData)),
  35. },
  36. &UploadingObject{
  37. Path: "test2",
  38. File: io.NopCloser(bytes.NewBuffer(fileData)),
  39. },
  40. ),
  41. })
  42. So(err, ShouldBeNil)
  43. getResp, err := cli.Package().Get(PackageGetReq{
  44. PackageID: createResp.Package.PackageID,
  45. })
  46. So(err, ShouldBeNil)
  47. So(getResp.PackageID, ShouldEqual, createResp.Package.PackageID)
  48. So(getResp.Package.Name, ShouldEqual, pkgName)
  49. err = cli.Package().Delete(PackageDelete{
  50. PackageID: createResp.Package.PackageID,
  51. })
  52. So(err, ShouldBeNil)
  53. })
  54. }
  55. func Test_Object(t *testing.T) {
  56. Convey("上传,下载,删除", t, func() {
  57. cli := NewClient(&Config{
  58. URL: "http://localhost:7890",
  59. })
  60. fileData := make([]byte, 4096)
  61. for i := 0; i < len(fileData); i++ {
  62. fileData[i] = byte(i)
  63. }
  64. stgAff := clitypes.UserSpaceID(2)
  65. pkgName := uuid.NewString()
  66. createResp, err := cli.Package().Create(PackageCreate{
  67. BucketID: 1,
  68. Name: pkgName,
  69. })
  70. So(err, ShouldBeNil)
  71. _, err = cli.Object().Upload(ObjectUpload{
  72. ObjectUploadInfo: ObjectUploadInfo{
  73. PackageID: createResp.Package.PackageID,
  74. Affinity: stgAff,
  75. },
  76. Files: iterator.Array(
  77. &UploadingObject{
  78. Path: "test",
  79. File: io.NopCloser(bytes.NewBuffer(fileData)),
  80. },
  81. &UploadingObject{
  82. Path: "test2",
  83. File: io.NopCloser(bytes.NewBuffer(fileData)),
  84. },
  85. ),
  86. })
  87. So(err, ShouldBeNil)
  88. // downFs, err := cli.ObjectDownload(ObjectDownloadReq{
  89. // ObjectID: upResp.ObjectID,
  90. // })
  91. // So(err, ShouldBeNil)
  92. //
  93. // downFileData, err := io.ReadAll(downFs)
  94. // So(err, ShouldBeNil)
  95. // So(downFileData, ShouldResemble, fileData)
  96. // downFs.Close()
  97. err = cli.Package().Delete(PackageDelete{
  98. PackageID: createResp.Package.PackageID,
  99. })
  100. So(err, ShouldBeNil)
  101. })
  102. }
  103. func Test_ObjectList(t *testing.T) {
  104. Convey("路径查询", t, func() {
  105. cli := NewClient(&Config{
  106. URL: "http://localhost:7890",
  107. })
  108. resp, err := cli.Object().ListByPath(ObjectListByPath{
  109. PackageID: 10,
  110. Path: "100x100K/zexema",
  111. })
  112. So(err, ShouldBeNil)
  113. fmt.Printf("\n")
  114. fmt.Printf("%+v\n", resp.Objects[0])
  115. })
  116. }
  117. func Test_Storage(t *testing.T) {
  118. Convey("上传后调度文件", t, func() {
  119. cli := NewClient(&Config{
  120. URL: "http://localhost:7890",
  121. })
  122. fileData := make([]byte, 4096)
  123. for i := 0; i < len(fileData); i++ {
  124. fileData[i] = byte(i)
  125. }
  126. pkgName := uuid.NewString()
  127. createResp, err := cli.Package().Create(PackageCreate{
  128. BucketID: 1,
  129. Name: pkgName,
  130. })
  131. So(err, ShouldBeNil)
  132. _, err = cli.Object().Upload(ObjectUpload{
  133. ObjectUploadInfo: ObjectUploadInfo{
  134. PackageID: createResp.Package.PackageID,
  135. },
  136. Files: iterator.Array(
  137. &UploadingObject{
  138. Path: "test",
  139. File: io.NopCloser(bytes.NewBuffer(fileData)),
  140. },
  141. &UploadingObject{
  142. Path: "test2",
  143. File: io.NopCloser(bytes.NewBuffer(fileData)),
  144. },
  145. ),
  146. })
  147. So(err, ShouldBeNil)
  148. _, err = cli.UserSpaceLoadPackage(UserSpaceLoadPackageReq{
  149. PackageID: createResp.Package.PackageID,
  150. UserSpaceID: 1,
  151. })
  152. So(err, ShouldBeNil)
  153. err = cli.Package().Delete(PackageDelete{
  154. PackageID: createResp.Package.PackageID,
  155. })
  156. So(err, ShouldBeNil)
  157. })
  158. }
  159. /*
  160. func Test_Cache(t *testing.T) {
  161. Convey("上传后移动文件", t, func() {
  162. cli := NewClient(&Config{
  163. URL: "http://localhost:7890",
  164. })
  165. fileData := make([]byte, 4096)
  166. for i := 0; i < len(fileData); i++ {
  167. fileData[i] = byte(i)
  168. }
  169. pkgName := uuid.NewString()
  170. createResp, err := cli.Package().Create(PackageCreate{
  171. BucketID: 1,
  172. Name: pkgName,
  173. })
  174. So(err, ShouldBeNil)
  175. _, err = cli.Object().Upload(ObjectUpload{
  176. ObjectUploadInfo: ObjectUploadInfo{
  177. PackageID: createResp.Package.PackageID,
  178. },
  179. Files: iterator.Array(
  180. &UploadingObject{
  181. Path: "test.txt",
  182. File: io.NopCloser(bytes.NewBuffer(fileData)),
  183. },
  184. &UploadingObject{
  185. Path: "test2.txt",
  186. File: io.NopCloser(bytes.NewBuffer(fileData)),
  187. },
  188. ),
  189. })
  190. So(err, ShouldBeNil)
  191. _, err = cli.CacheMovePackage(CacheMovePackageReq{
  192. PackageID: createResp.Package.PackageID,
  193. StorageID: 1,
  194. })
  195. So(err, ShouldBeNil)
  196. err = cli.Package().Delete(PackageDelete{
  197. PackageID: createResp.Package.PackageID,
  198. })
  199. So(err, ShouldBeNil)
  200. })
  201. }
  202. */
  203. func Test_Sign(t *testing.T) {
  204. Convey("签名接口", t, func() {
  205. cli := NewClient(&Config{
  206. URL: "http://localhost:7890/v1",
  207. AccessKey: "123456",
  208. SecretKey: "123456",
  209. })
  210. fileData := make([]byte, 4096)
  211. for i := 0; i < len(fileData); i++ {
  212. fileData[i] = byte(i)
  213. }
  214. pkgName := uuid.NewString()
  215. createResp, err := cli.Package().Create(PackageCreate{
  216. BucketID: 1,
  217. Name: pkgName,
  218. })
  219. So(err, ShouldBeNil)
  220. _, err = cli.Object().Upload(ObjectUpload{
  221. ObjectUploadInfo: ObjectUploadInfo{
  222. PackageID: createResp.Package.PackageID,
  223. },
  224. Files: iterator.Array(
  225. &UploadingObject{
  226. Path: "abc/test",
  227. File: io.NopCloser(bytes.NewBuffer(fileData)),
  228. },
  229. &UploadingObject{
  230. Path: "test4",
  231. File: io.NopCloser(bytes.NewBuffer(fileData)),
  232. },
  233. ),
  234. })
  235. So(err, ShouldBeNil)
  236. getResp, err := cli.Package().Get(PackageGetReq{
  237. PackageID: createResp.Package.PackageID,
  238. })
  239. So(err, ShouldBeNil)
  240. So(getResp.PackageID, ShouldEqual, createResp.Package.PackageID)
  241. So(getResp.Package.Name, ShouldEqual, pkgName)
  242. err = cli.Package().Delete(PackageDelete{
  243. PackageID: createResp.Package.PackageID,
  244. })
  245. So(err, ShouldBeNil)
  246. })
  247. }

本项目旨在将云际存储公共基础设施化,使个人及企业可低门槛使用高效的云际存储服务(安装开箱即用云际存储客户端即可,无需关注其他组件的部署),同时支持用户灵活便捷定制云际存储的功能细节。