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

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