github.com/voedger/voedger@v0.0.0-20240520144910-273e84102129/pkg/appparts/example_test.go (about) 1 /* 2 * Copyright (c) 2021-present Sigma-Soft, Ltd. 3 * @author: Nikolay Nikitin 4 */ 5 6 package appparts_test 7 8 import ( 9 "fmt" 10 11 "github.com/voedger/voedger/pkg/appdef" 12 "github.com/voedger/voedger/pkg/appparts" 13 "github.com/voedger/voedger/pkg/iratesce" 14 "github.com/voedger/voedger/pkg/istorage/mem" 15 "github.com/voedger/voedger/pkg/istorage/provider" 16 "github.com/voedger/voedger/pkg/istructs" 17 "github.com/voedger/voedger/pkg/istructsmem" 18 payloads "github.com/voedger/voedger/pkg/itokens-payloads" 19 "github.com/voedger/voedger/pkg/itokensjwt" 20 ) 21 22 func Example() { 23 buildAppDef := func(verInfo ...string) (appdef.IAppDefBuilder, appdef.IAppDef) { 24 adb := appdef.New() 25 adb.AddPackage("test", "test.com/test") 26 27 adb.AddCDoc(appdef.NewQName("test", "verInfo")).SetComment(verInfo...) 28 app, err := adb.Build() 29 if err != nil { 30 panic(err) 31 } 32 return adb, app 33 } 34 35 appConfigs := istructsmem.AppConfigsType{} 36 adb_1_v1, app_1_v1 := buildAppDef("app-1 ver.1") 37 adb_2_v1, app_2_v1 := buildAppDef("app-2 ver.1") 38 appConfigs.AddConfig(istructs.AppQName_test1_app1, adb_1_v1).SetNumAppWorkspaces(istructs.DefaultNumAppWorkspaces) 39 appConfigs.AddConfig(istructs.AppQName_test1_app2, adb_2_v1).SetNumAppWorkspaces(istructs.DefaultNumAppWorkspaces) 40 41 appStructs := istructsmem.Provide( 42 appConfigs, 43 iratesce.TestBucketsFactory, 44 payloads.TestAppTokensFactory(itokensjwt.TestTokensJWT()), 45 provider.Provide(mem.Provide(), "")) 46 47 appParts, cleanupParts, err := appparts.New(appStructs) 48 if err != nil { 49 panic(err) 50 } 51 defer cleanupParts() 52 53 report := func(part appparts.IAppPartition) { 54 fmt.Println(part.App(), "partition", part.ID()) 55 part.AppStructs().AppDef().Types(func(t appdef.IType) { 56 if !t.IsSystem() { 57 fmt.Println("-", t, t.Comment()) 58 } 59 }) 60 } 61 62 fmt.Println("*** Add ver 1 ***") 63 64 appParts.DeployApp(istructs.AppQName_test1_app1, app_1_v1, 1, appparts.PoolSize(2, 2, 2)) 65 appParts.DeployApp(istructs.AppQName_test1_app2, app_2_v1, 1, appparts.PoolSize(2, 2, 2)) 66 67 appParts.DeployAppPartitions(istructs.AppQName_test1_app1, []istructs.PartitionID{1}) 68 appParts.DeployAppPartitions(istructs.AppQName_test1_app2, []istructs.PartitionID{1}) 69 70 a1_v1_p1, err := appParts.Borrow(istructs.AppQName_test1_app1, 1, appparts.ProcessorKind_Command) 71 if err != nil { 72 panic(err) 73 } 74 defer a1_v1_p1.Release() 75 76 report(a1_v1_p1) 77 78 a2_v1_p1, err := appParts.Borrow(istructs.AppQName_test1_app2, 1, appparts.ProcessorKind_Query) 79 if err != nil { 80 panic(err) 81 } 82 defer a2_v1_p1.Release() 83 84 report(a2_v1_p1) 85 86 // Output: 87 // *** Add ver 1 *** 88 // test1/app1 partition 1 89 // - CDoc «test.verInfo» app-1 ver.1 90 // test1/app2 partition 1 91 // - CDoc «test.verInfo» app-2 ver.1 92 }