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.

test.go 5.8 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. package cmdline
  2. import (
  3. "context"
  4. "fmt"
  5. "io"
  6. "github.com/spf13/cobra"
  7. "gitlink.org.cn/cloudream/common/pkgs/future"
  8. "gitlink.org.cn/cloudream/common/pkgs/ioswitch/exec"
  9. cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
  10. stgglb "gitlink.org.cn/cloudream/storage/common/globals"
  11. "gitlink.org.cn/cloudream/storage/common/pkgs/ioswitch2"
  12. "gitlink.org.cn/cloudream/storage/common/pkgs/ioswitch2/parser"
  13. coormq "gitlink.org.cn/cloudream/storage/common/pkgs/mq/coordinator"
  14. )
  15. func init() {
  16. rootCmd.AddCommand(&cobra.Command{
  17. Use: "test2",
  18. Short: "test2",
  19. Run: func(cmd *cobra.Command, args []string) {
  20. coorCli, err := stgglb.CoordinatorMQPool.Acquire()
  21. if err != nil {
  22. panic(err)
  23. }
  24. defer stgglb.CoordinatorMQPool.Release(coorCli)
  25. stgs, err := coorCli.GetStorageDetails(coormq.ReqGetStorageDetails([]cdssdk.StorageID{1, 2}))
  26. if err != nil {
  27. panic(err)
  28. }
  29. ft := ioswitch2.NewFromTo()
  30. ft.SegmentParam = cdssdk.NewSegmentRedundancy(1293, 3)
  31. ft.AddFrom(ioswitch2.NewFromShardstore("4E69A8B8CD9F42EDE371DA94458BADFB2308AFCA736AA393784A3D81F4746377", *stgs.Storages[0].MasterHub, stgs.Storages[0].Storage, ioswitch2.RawStream()))
  32. ft.AddTo(ioswitch2.NewToShardStore(*stgs.Storages[1].MasterHub, stgs.Storages[1].Storage, ioswitch2.SegmentStream(0), "0"))
  33. ft.AddTo(ioswitch2.NewToShardStore(*stgs.Storages[1].MasterHub, stgs.Storages[1].Storage, ioswitch2.SegmentStream(1), "1"))
  34. ft.AddTo(ioswitch2.NewToShardStore(*stgs.Storages[1].MasterHub, stgs.Storages[1].Storage, ioswitch2.SegmentStream(2), "2"))
  35. plans := exec.NewPlanBuilder()
  36. err = parser.Parse(ft, plans)
  37. if err != nil {
  38. panic(err)
  39. }
  40. fmt.Printf("plans: %v\n", plans)
  41. exec := plans.Execute(exec.NewExecContext())
  42. fut := future.NewSetVoid()
  43. go func() {
  44. mp, err := exec.Wait(context.Background())
  45. if err != nil {
  46. panic(err)
  47. }
  48. fmt.Printf("0: %v, 1: %v, 2: %v\n", mp["0"], mp["1"], mp["2"])
  49. fut.SetVoid()
  50. }()
  51. fut.Wait(context.TODO())
  52. },
  53. })
  54. rootCmd.AddCommand(&cobra.Command{
  55. Use: "test",
  56. Short: "test",
  57. Run: func(cmd *cobra.Command, args []string) {
  58. coorCli, err := stgglb.CoordinatorMQPool.Acquire()
  59. if err != nil {
  60. panic(err)
  61. }
  62. defer stgglb.CoordinatorMQPool.Release(coorCli)
  63. stgs, err := coorCli.GetStorageDetails(coormq.ReqGetStorageDetails([]cdssdk.StorageID{1, 2}))
  64. if err != nil {
  65. panic(err)
  66. }
  67. ft := ioswitch2.NewFromTo()
  68. ft.SegmentParam = cdssdk.NewSegmentRedundancy(1293, 3)
  69. ft.ECParam = &cdssdk.DefaultECRedundancy
  70. ft.AddFrom(ioswitch2.NewFromShardstore("22CC59CE3297F78F2D20DC1E33181B77F21E6782097C94E1664F99F129834069", *stgs.Storages[1].MasterHub, stgs.Storages[1].Storage, ioswitch2.SegmentStream(0)))
  71. ft.AddFrom(ioswitch2.NewFromShardstore("5EAC20EB3EBC7B5FA176C5BD1C01041FB2A6D14C35D6A232CA83D7F1E4B01ADE", *stgs.Storages[1].MasterHub, stgs.Storages[1].Storage, ioswitch2.SegmentStream(1)))
  72. ft.AddFrom(ioswitch2.NewFromShardstore("A9BC1802F37100C80C72A1D6E8F53C0E0B73F85F99153D8C78FB01CEC9D8D903", *stgs.Storages[1].MasterHub, stgs.Storages[1].Storage, ioswitch2.SegmentStream(2)))
  73. toDrv, drvStr := ioswitch2.NewToDriverWithRange(ioswitch2.RawStream(), exec.NewRange(500, 500))
  74. ft.AddTo(toDrv)
  75. ft.AddTo(ioswitch2.NewToShardStore(*stgs.Storages[0].MasterHub, stgs.Storages[0].Storage, ioswitch2.ECSrteam(0), "EC0"))
  76. ft.AddTo(ioswitch2.NewToShardStore(*stgs.Storages[0].MasterHub, stgs.Storages[0].Storage, ioswitch2.ECSrteam(1), "EC1"))
  77. ft.AddTo(ioswitch2.NewToShardStore(*stgs.Storages[0].MasterHub, stgs.Storages[0].Storage, ioswitch2.ECSrteam(2), "EC2"))
  78. plans := exec.NewPlanBuilder()
  79. err = parser.Parse(ft, plans)
  80. if err != nil {
  81. panic(err)
  82. }
  83. fmt.Printf("plans: %v\n", plans)
  84. exec := plans.Execute(exec.NewExecContext())
  85. fut := future.NewSetVoid()
  86. go func() {
  87. mp, err := exec.Wait(context.Background())
  88. if err != nil {
  89. panic(err)
  90. }
  91. for k, v := range mp {
  92. fmt.Printf("%s: %v\n", k, v)
  93. }
  94. fut.SetVoid()
  95. }()
  96. go func() {
  97. str, err := exec.BeginRead(drvStr)
  98. if err != nil {
  99. panic(err)
  100. }
  101. data, err := io.ReadAll(str)
  102. if err != nil {
  103. panic(err)
  104. }
  105. fmt.Printf("read(%v): %s\n", len(data), string(data))
  106. }()
  107. fut.Wait(context.TODO())
  108. },
  109. })
  110. rootCmd.AddCommand(&cobra.Command{
  111. Use: "test3",
  112. Short: "test3",
  113. Run: func(cmd *cobra.Command, args []string) {
  114. coorCli, err := stgglb.CoordinatorMQPool.Acquire()
  115. if err != nil {
  116. panic(err)
  117. }
  118. defer stgglb.CoordinatorMQPool.Release(coorCli)
  119. stgs, err := coorCli.GetStorageDetails(coormq.ReqGetStorageDetails([]cdssdk.StorageID{1, 2}))
  120. if err != nil {
  121. panic(err)
  122. }
  123. ft := ioswitch2.NewFromTo()
  124. ft.ECParam = &cdssdk.DefaultECRedundancy
  125. ft.AddFrom(ioswitch2.NewFromShardstore("4E69A8B8CD9F42EDE371DA94458BADFB2308AFCA736AA393784A3D81F4746377", *stgs.Storages[1].MasterHub, stgs.Storages[1].Storage, ioswitch2.RawStream()))
  126. ft.AddTo(ioswitch2.NewToShardStore(*stgs.Storages[0].MasterHub, stgs.Storages[0].Storage, ioswitch2.ECSrteam(0), "EC0"))
  127. ft.AddTo(ioswitch2.NewToShardStore(*stgs.Storages[0].MasterHub, stgs.Storages[0].Storage, ioswitch2.ECSrteam(1), "EC1"))
  128. ft.AddTo(ioswitch2.NewToShardStore(*stgs.Storages[0].MasterHub, stgs.Storages[0].Storage, ioswitch2.ECSrteam(2), "EC2"))
  129. plans := exec.NewPlanBuilder()
  130. err = parser.Parse(ft, plans)
  131. if err != nil {
  132. panic(err)
  133. }
  134. fmt.Printf("plans: %v\n", plans)
  135. exec := plans.Execute(exec.NewExecContext())
  136. fut := future.NewSetVoid()
  137. go func() {
  138. mp, err := exec.Wait(context.Background())
  139. if err != nil {
  140. panic(err)
  141. }
  142. for k, v := range mp {
  143. fmt.Printf("%s: %v\n", k, v)
  144. }
  145. fut.SetVoid()
  146. }()
  147. fut.Wait(context.TODO())
  148. },
  149. })
  150. }

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