package cmdline /* import ( "context" "fmt" "io" "github.com/spf13/cobra" "gitlink.org.cn/cloudream/common/pkgs/future" "gitlink.org.cn/cloudream/common/pkgs/ioswitch/exec" cdssdk "gitlink.org.cn/cloudream/common/sdks/storage" stgglb "gitlink.org.cn/cloudream/storage/common/globals" "gitlink.org.cn/cloudream/storage/common/pkgs/ioswitch2" "gitlink.org.cn/cloudream/storage/common/pkgs/ioswitch2/parser" "gitlink.org.cn/cloudream/storage/common/pkgs/ioswitchlrc" lrcparser "gitlink.org.cn/cloudream/storage/common/pkgs/ioswitchlrc/parser" coormq "gitlink.org.cn/cloudream/storage/common/pkgs/mq/coordinator" ) func init() { rootCmd.AddCommand(&cobra.Command{ Use: "test", Short: "test", // Args: cobra.ExactArgs(1), Run: func(cmd *cobra.Command, args []string) { // cmdCtx := GetCmdCtx(cmd) coorCli, err := stgglb.CoordinatorMQPool.Acquire() if err != nil { panic(err) } defer stgglb.CoordinatorMQPool.Release(coorCli) nodes, err := coorCli.GetNodes(coormq.NewGetNodes([]cdssdk.NodeID{1, 2})) if err != nil { panic(err) } ft := ioswitch2.NewFromTo() ft.AddFrom(ioswitch2.NewFromNode("Qmf412jQZiuVUtdgnB36FXFX7xg5V6KEbSJ4dpQuhkLyfD", &nodes.Nodes[0], -1)) ft.AddTo(ioswitch2.NewToNode(nodes.Nodes[1], -1, "asd")) le := int64(3) toExec, hd := ioswitch2.NewToDriverWithRange(-1, exec.Range{Offset: 5, Length: &le}) ft.AddTo(toExec) ft.AddTo(ioswitch2.NewToNode(nodes.Nodes[1], 0, "0")) ft.AddTo(ioswitch2.NewToNode(nodes.Nodes[1], 1, "1")) ft.AddTo(ioswitch2.NewToNode(nodes.Nodes[1], 2, "2")) // ft.AddFrom(ioswitch2.NewFromNode("QmS2s8GRYHEurXL7V1zUtKvf2H1BGcQc5NN1T1hiSnWvbd", &nodes.Nodes[0], 1)) // ft.AddFrom(ioswitch2.NewFromNode("QmUgUEUMzdnjPNx6xu9PDGXpSyXTk8wzPWvyYZ9zasE1WW", &nodes.Nodes[1], 2)) // le := int64(5) // toExec, hd := ioswitch2.NewToDriverWithRange(-1, exec.Range{Offset: 3, Length: &le}) // toExec, hd := plans.NewToExecutorWithRange(1, plans.Range{Offset: 0, Length: nil}) // toExec2, hd2 := plans.NewToExecutorWithRange(2, plans.Range{Offset: 0, Length: nil}) // ft.AddTo(toExec) // ft.AddTo(toExec2) // fromExec, hd := plans.NewFromExecutor(-1) // ft.AddFrom(fromExec) // ft.AddTo(plans.NewToNode(nodes.Nodes[1], -1, "asd")) parser := parser.NewParser(cdssdk.DefaultECRedundancy) plans := exec.NewPlanBuilder() err = parser.Parse(ft, plans) if err != nil { panic(err) } exec := plans.Execute() fut := future.NewSetVoid() go func() { mp, err := exec.Wait(context.Background()) if err != nil { panic(err) } fmt.Printf("mp: %+v\n", mp) fut.SetVoid() }() go func() { // exec.BeginWrite(io.NopCloser(bytes.NewBuffer([]byte("hello world"))), hd) // if err != nil { // panic(err) // } str, err := exec.BeginRead(hd) if err != nil { panic(err) } defer str.Close() data, err := io.ReadAll(str) if err != nil && err != io.EOF { panic(err) } fmt.Printf("data: %v(%v)\n", string(data), len(data)) }() fut.Wait(context.TODO()) }, }) // rootCmd.AddCommand(&cobra.Command{ // Use: "test", // Short: "test", // // Args: cobra.ExactArgs(1), // Run: func(cmd *cobra.Command, args []string) { // cmdCtx := GetCmdCtx(cmd) // file, _ := cmdCtx.Cmdline.Svc.ObjectSvc().Download(1, downloader.DownloadReqeust{ // ObjectID: 27379, // Length: -1, // }) // data, _ := io.ReadAll(file.File) // fmt.Printf("data: %v(%v)\n", string(data), len(data)) // }, // }) rootCmd.AddCommand(&cobra.Command{ Use: "test3", Short: "test3", // Args: cobra.ExactArgs(1), Run: func(cmd *cobra.Command, args []string) { // cmdCtx := GetCmdCtx(cmd) coorCli, err := stgglb.CoordinatorMQPool.Acquire() if err != nil { panic(err) } defer stgglb.CoordinatorMQPool.Release(coorCli) nodes, err := coorCli.GetNodes(coormq.NewGetNodes([]cdssdk.NodeID{1, 2})) if err != nil { panic(err) } red := cdssdk.DefaultLRCRedundancy var toes []ioswitchlrc.To for i := 0; i < red.N; i++ { toes = append(toes, ioswitchlrc.NewToNode(nodes.Nodes[i%2], i, fmt.Sprintf("%d", i))) } plans := exec.NewPlanBuilder() err = lrcparser.Encode(ioswitchlrc.NewFromNode("QmNspjDLxQbAsuh37jRXKvLWHE2f7JpqY4HEJ8x7Jgbzqa", &nodes.Nodes[0], -1), toes, plans) if err != nil { panic(err) // return nil, fmt.Errorf("parsing plan: %w", err) } ioRet, err := plans.Execute().Wait(context.TODO()) if err != nil { panic(err) // return nil, fmt.Errorf("executing io plan: %w", err) } fmt.Printf("ioRet: %v\n", ioRet) }, }) rootCmd.AddCommand(&cobra.Command{ Use: "test4", Short: "test4", // Args: cobra.ExactArgs(1), Run: func(cmd *cobra.Command, args []string) { // cmdCtx := GetCmdCtx(cmd) coorCli, err := stgglb.CoordinatorMQPool.Acquire() if err != nil { panic(err) } defer stgglb.CoordinatorMQPool.Release(coorCli) nodes, err := coorCli.GetNodes(coormq.NewGetNodes([]cdssdk.NodeID{1, 2})) if err != nil { panic(err) } // red := cdssdk.DefaultLRCRedundancy plans := exec.NewPlanBuilder() err = lrcparser.ReconstructGroup([]ioswitchlrc.From{ ioswitchlrc.NewFromNode("QmVAZzVQEvnvTvzSz2SvpziAcDSQ8aYCoTyGrZNuV8raEQ", &nodes.Nodes[1], 0), ioswitchlrc.NewFromNode("QmVAZzVQEvnvTvzSz2SvpziAcDSQ8aYCoTyGrZNuV8raEQ", &nodes.Nodes[1], 1), }, []ioswitchlrc.To{ ioswitchlrc.NewToNode(nodes.Nodes[1], 3, "3"), }, plans) if err != nil { panic(err) // return nil, fmt.Errorf("parsing plan: %w", err) } ioRet, err := plans.Execute().Wait(context.TODO()) if err != nil { panic(err) // return nil, fmt.Errorf("executing io plan: %w", err) } fmt.Printf("ioRet: %v\n", ioRet) }, }) rootCmd.AddCommand(&cobra.Command{ Use: "test3", Short: "test3", // Args: cobra.ExactArgs(1), Run: func(cmd *cobra.Command, args []string) { // cmdCtx := GetCmdCtx(cmd) coorCli, err := stgglb.CoordinatorMQPool.Acquire() if err != nil { panic(err) } defer stgglb.CoordinatorMQPool.Release(coorCli) nodes, err := coorCli.GetNodes(coormq.NewGetNodes([]cdssdk.NodeID{1, 2})) if err != nil { panic(err) } // red := cdssdk.DefaultLRCRedundancy plans := exec.NewPlanBuilder() le := int64(1293) err = lrcparser.ReconstructAny([]ioswitchlrc.From{ ioswitchlrc.NewFromNode("QmVAZzVQEvnvTvzSz2SvpziAcDSQ8aYCoTyGrZNuV8raEQ", &nodes.Nodes[0], 0), ioswitchlrc.NewFromNode("QmQBKncEDqxw3BrGr3th3gS3jUC2fizGz1w29ZxxrrKfNv", &nodes.Nodes[0], 2), }, []ioswitchlrc.To{ ioswitchlrc.NewToNodeWithRange(nodes.Nodes[1], -1, "-1", exec.Range{0, &le}), ioswitchlrc.NewToNodeWithRange(nodes.Nodes[1], 0, "0", exec.Range{10, &le}), ioswitchlrc.NewToNode(nodes.Nodes[1], 1, "1"), ioswitchlrc.NewToNode(nodes.Nodes[1], 2, "2"), ioswitchlrc.NewToNode(nodes.Nodes[1], 3, "3"), }, plans) if err != nil { panic(err) // return nil, fmt.Errorf("parsing plan: %w", err) } ioRet, err := plans.Execute().Wait(context.TODO()) if err != nil { panic(err) // return nil, fmt.Errorf("executing io plan: %w", err) } fmt.Printf("ioRet: %v\n", ioRet) }, }) } */