github.com/godaddy-x/freego@v1.0.156/bench_test.go (about)

     1  package main
     2  
     3  import (
     4  	"fmt"
     5  	"github.com/godaddy-x/freego/ormx/sqlc"
     6  	"github.com/godaddy-x/freego/ormx/sqld"
     7  	"github.com/godaddy-x/freego/utils"
     8  	"github.com/godaddy-x/freego/utils/decimal"
     9  	"go.mongodb.org/mongo-driver/bson/primitive"
    10  )
    11  
    12  type OwWallet struct {
    13  	Id           int64  `json:"id" bson:"_id"`
    14  	AppID        string `json:"appID" bson:"appID"`
    15  	WalletID     string `json:"walletID" bson:"walletID"`
    16  	Alias        string `json:"alias" bson:"alias"`
    17  	IsTrust      int64  `json:"isTrust" bson:"isTrust"`
    18  	PasswordType int64  `json:"passwordType" bson:"passwordType"`
    19  	Password     string `json:"password" bson:"password"`
    20  	AuthKey      string `json:"authKey" bson:"authKey"`
    21  	RootPath     string `json:"rootPath" bson:"rootPath"`
    22  	AccountIndex int64  `json:"accountIndex" bson:"accountIndex"`
    23  	Keystore     string `json:"keyJson" bson:"keyJson"`
    24  	Applytime    int64  `json:"applytime" bson:"applytime"`
    25  	Succtime     int64  `json:"succtime" bson:"succtime"`
    26  	Dealstate    int64  `json:"dealstate" bson:"dealstate"`
    27  	Ctime        int64  `json:"ctime" bson:"ctime"`
    28  	Utime        int64  `json:"utime" bson:"utime"`
    29  	State        int64  `json:"state" bson:"state"`
    30  }
    31  
    32  func (o *OwWallet) GetTable() string {
    33  	return "ow_wallet"
    34  }
    35  
    36  func (o *OwWallet) NewObject() sqlc.Object {
    37  	return &OwWallet{}
    38  }
    39  
    40  func (o *OwWallet) NewIndex() []sqlc.Index {
    41  	return nil
    42  }
    43  
    44  type OwWallet2 struct {
    45  	Id           primitive.ObjectID `json:"id" bson:"_id"`
    46  	AppID        string             `json:"appID" bson:"appID"`
    47  	WalletID     string             `json:"walletID" bson:"walletID"`
    48  	Alias        string             `json:"alias" bson:"alias"`
    49  	IsTrust      int64              `json:"isTrust" bson:"isTrust"`
    50  	PasswordType int64              `json:"passwordType" bson:"passwordType"`
    51  	Password     string             `json:"password" bson:"password"`
    52  	AuthKey      string             `json:"authKey" bson:"authKey"`
    53  	RootPath     string             `json:"rootPath" bson:"rootPath"`
    54  	AccountIndex int64              `json:"accountIndex" bson:"accountIndex"`
    55  	Keystore     string             `json:"keystore" bson:"keystore"`
    56  	Applytime    int64              `json:"applytime" bson:"applytime"`
    57  	Succtime     int64              `json:"succtime" bson:"succtime"`
    58  	Dealstate    int64              `json:"dealstate" bson:"dealstate"`
    59  	Ctime        int64              `json:"ctime" bson:"ctime"`
    60  	Utime        int64              `json:"utime" bson:"utime"`
    61  	State        int64              `json:"state" bson:"state"`
    62  }
    63  
    64  func (o *OwWallet2) GetTable() string {
    65  	return "ow_wallet2"
    66  }
    67  
    68  func (o *OwWallet2) NewObject() sqlc.Object {
    69  	return &OwWallet2{}
    70  }
    71  
    72  func (o *OwWallet2) NewIndex() []sqlc.Index {
    73  	return nil
    74  }
    75  
    76  type OwBlock struct {
    77  	Id                int64  `json:"id" bson:"_id"`
    78  	Hash              string `json:"hash" bson:"hash"`
    79  	Confirmations     string `json:"confirmations" bson:"confirmations"`
    80  	Merkleroot        string `json:"merkleroot" bson:"merkleroot"`
    81  	Previousblockhash string `json:"previousblockhash" bson:"previousblockhash"`
    82  	Height            int64  `json:"height" bson:"height"`
    83  	Version           int64  `json:"version" bson:"version"`
    84  	Time              int64  `json:"time" bson:"time"`
    85  	Fork              string `json:"fork" bson:"fork"`
    86  	Symbol            string `json:"symbol" bson:"symbol"`
    87  	Ctime             int64  `json:"ctime" bson:"ctime"`
    88  	Utime             int64  `json:"utime" bson:"utime"`
    89  	State             int64  `json:"state" bson:"state"`
    90  }
    91  
    92  func (o *OwBlock) GetTable() string {
    93  	return "ow_block"
    94  }
    95  
    96  func (o *OwBlock) NewObject() sqlc.Object {
    97  	return &OwBlock{}
    98  }
    99  
   100  func (o *OwBlock) NewIndex() []sqlc.Index {
   101  	return nil
   102  }
   103  
   104  type OwAuth struct {
   105  	Id       int64           `json:"id" bson:"_id" auto:"true"`
   106  	Name     string          `json:"name" bson:"secret"`
   107  	Usestate decimal.Decimal `json:"usestate" bson:"usestate"`
   108  }
   109  
   110  func (o *OwAuth) GetTable() string {
   111  	return "ow_api"
   112  }
   113  
   114  func (o *OwAuth) NewObject() sqlc.Object {
   115  	return &OwAuth{}
   116  }
   117  
   118  func (o *OwAuth) NewIndex() []sqlc.Index {
   119  	return nil
   120  }
   121  
   122  // go build -gcflags=-m main.go
   123  // go tool pprof -http=":8081" .\cpuprofile.out
   124  // go test bench_test.go -bench .  -benchmem -count=5 -cpuprofile cpuprofile.out -memprofile memprofile.out
   125  
   126  func initMysqlDB() {
   127  	conf := sqld.MysqlConfig{}
   128  	if err := utils.ReadLocalJsonConfig("resource/mysql.json", &conf); err != nil {
   129  		panic(utils.AddStr("读取mysql配置失败: ", err.Error()))
   130  	}
   131  	new(sqld.MysqlManager).InitConfigAndCache(nil, conf)
   132  	fmt.Println("init mysql success")
   133  }
   134  
   135  func initMongoDB() {
   136  	conf := sqld.MGOConfig{}
   137  	if err := utils.ReadLocalJsonConfig("resource/mongo.json", &conf); err != nil {
   138  		panic(utils.AddStr("读取mongo配置失败: ", err.Error()))
   139  	}
   140  	new(sqld.MGOManager).InitConfigAndCache(nil, conf)
   141  	fmt.Println("init mongo success")
   142  }
   143  
   144  func initDriver() {
   145  	sqld.ModelDriver(
   146  		&OwWallet{},
   147  		//&OwWallet2{},
   148  		//&OwBlock{},
   149  		//&OwContract{},
   150  		&OwAuth{},
   151  	)
   152  }
   153  
   154  func init() {
   155  
   156  	// 注册对象
   157  	//sqld.ModelDriver(
   158  	//	sqld.NewHook(func() interface{} { return &OwWallet{} }, func() interface{} { return &[]*OwWallet{} }),
   159  	//)
   160  	//initConsul()
   161  	//initMysqlDB()
   162  	//initMongoDB()
   163  	//sqld.ModelDriver(
   164  	//	sqld.Hook{
   165  	//		func() interface{} { return &DxApp{} },
   166  	//		func() interface{} { return &[]*DxApp{} },
   167  	//	},
   168  	//)
   169  	//redis := cache.RedisConfig{}
   170  	//if err := utils.ReadLocalJsonConfig("resource/redis.json", &redis); err != nil {
   171  	//	panic(utils.AddStr("读取redis配置失败: ", err.Error()))
   172  	//}
   173  	//manager, err := new(cache.RedisManager).InitConfig(redis)
   174  	//if err != nil {
   175  	//	panic(err.Error())
   176  	//}
   177  	//manager, err = manager.Client()
   178  	//if err != nil {
   179  	//	panic(err.Error())
   180  	//}
   181  	//mongo1 := sqld.MGOConfig{}
   182  	//if err := utils.ReadLocalJsonConfig("resource/mongo.json", &mongo1); err != nil {
   183  	//	panic(utils.AddStr("读取mongo配置失败: ", err.Error()))
   184  	//}
   185  	//new(sqld.MGOManager).InitConfigAndCache(nil, mongo1)
   186  	//opts := &options.ClientOptions{Hosts: []string{"192.168.27.124:27017"}}
   187  	//// opts.SetAuth(options.Credential{AuthMechanism: "SCRAM-SHA-1", AuthSource: "test", Username: "test", Password: "123456"})
   188  	//client, err := mongo.Connect(context.Background(), opts)
   189  	//if err != nil {
   190  	//	fmt.Println(err)
   191  	//	return
   192  	//}
   193  	//MyClient = client
   194  }
   195  
   196  //func BenchmarkSave(b *testing.B) {
   197  //	b.StopTimer()  //调用该函数停止压力测试的时间计数go test -run="webbench_test.go" -test.bench="."*
   198  //	b.StartTimer() //重新开始时间
   199  //	for i := 0; i < b.N; i++ { //use b.N for looping
   200  //		db, err := new(sqld.MGOManager).Get()
   201  //		if err != nil {
   202  //			panic(err)
   203  //		}
   204  //		defer db.Close()
   205  //		//l := utils.UnixMilli()
   206  //		o := OwWallet{
   207  //			AppID:    utils.GetSnowFlakeStrID(),
   208  //			WalletID: utils.GetSnowFlakeStrID(),
   209  //		}
   210  //		if err := db.Save(&o); err != nil {
   211  //			fmt.Println(err)
   212  //		}
   213  //	}
   214  //	//fmt.Println(wallet.Id)
   215  //}
   216  
   217  //func BenchmarkFind(b *testing.B) {
   218  //	b.StopTimer()  //调用该函数停止压力测试的时间计数go test -run="webbench_test.go" -test.bench="."*
   219  //	b.StartTimer() //重新开始时间
   220  //	for i := 0; i < b.N; i++ { //use b.N for looping
   221  //		db, err := new(sqld.MGOManager).Get(sqld.Option{OpenTx: true})
   222  //		if err != nil {
   223  //			panic(err)
   224  //		}
   225  //		defer db.Close()
   226  //		o := OwWallet{}
   227  //		if err := db.FindOne(sqlc.M(&OwWallet{}).Eq("id", 1110012978914131972), &o); err != nil {
   228  //			fmt.Println(err)
   229  //		}
   230  //		//fmt.Println(wallet.Id)
   231  //	}
   232  //}
   233  //
   234  //func BenchmarkUpdateBy(b *testing.B) {
   235  //	b.StopTimer()  //调用该函数停止压力测试的时间计数go test -run="webbench_test.go" -test.bench="."*
   236  //	b.StartTimer() //重新开始时间
   237  //	for i := 0; i < b.N; i++ { //use b.N for looping
   238  //		db, err := new(sqld.MGOManager).Get(sqld.Option{OpenTx: true})
   239  //		if err != nil {
   240  //			panic(err)
   241  //		}
   242  //		defer db.Close()
   243  //		if err := db.UpdateByCnd(sqlc.M(&OwWallet{}).Eq("id", 1110012978914131972).UpdateKeyValue([]string{"appID", "ctime"}, utils.GetSnowFlakeStrID(), 1)); err != nil {
   244  //			fmt.Println(err)
   245  //		}
   246  //		//fmt.Println(wallet.Id)
   247  //	}
   248  //}
   249  
   250  //func BenchmarkMysqlFindOne(b *testing.B) {
   251  //	b.StopTimer()  //调用该函数停止压力测试的时间计数go test -run="webbench_test.go" -test.bench="."*
   252  //	b.StartTimer() //重新开始时间
   253  //	for i := 0; i < b.N; i++ { //use b.N for looping
   254  //		db, err := new(sqld.MysqlManager).Get(sqld.Option{OpenTx: false})
   255  //		if err != nil {
   256  //			panic(err)
   257  //		}
   258  //		defer db.Close()
   259  //		//l := utils.UnixMilli()
   260  //		wallet := OwWallet{}
   261  //		if err := db.FindOne(sqlc.M().Eq("id", 1109819683034365953), &wallet); err != nil {
   262  //			fmt.Println(err)
   263  //		}
   264  //		//fmt.Println("cost: ", utils.UnixMilli()-l)
   265  //	}
   266  //}
   267  //
   268  //func BenchmarkMongoFindOne(b *testing.B) {
   269  //	b.StopTimer()  //调用该函数停止压力测试的时间计数go test -run="webbench_test.go" -test.bench="."*
   270  //	b.StartTimer() //重新开始时间
   271  //	for i := 0; i < b.N; i++ { //use b.N for looping
   272  //		db, err := new(sqld.MGOManager).Get()
   273  //		if err != nil {
   274  //			panic(err)
   275  //		}
   276  //		defer db.Close()
   277  //		o := &OwWallet{}
   278  //		if err := db.FindOne(sqlc.M().Eq("id", 1182663723102240768), o); err != nil {
   279  //			fmt.Println(err)
   280  //		}
   281  //	}
   282  //}
   283  
   284  //func BenchmarkConsulxCallRPC(b *testing.B) {
   285  //	mgr, err := new(consul.ConsulManager).Client()
   286  //	if err != nil {
   287  //		panic(err)
   288  //	}
   289  //
   290  //	req := &ReqObj{AesObj{"456789"}, 123, "托尔斯泰"}
   291  //	res := &ResObj{}
   292  //
   293  //	if err := mgr.CallRPC(&consul.CallInfo{
   294  //		Package:  "mytest",
   295  //		Service:  "UserServiceImpl",
   296  //		Method:   "FindUser",
   297  //		Request:  req,
   298  //		Response: res,
   299  //	}); err != nil {
   300  //		fmt.Println(err)
   301  //		return
   302  //	}
   303  //	//fmt.Println("grpc result: ", res)
   304  //}