You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

426 lines
12 KiB
Go

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package test
import (
"context"
"crypto/md5"
"joybuywork/internal/app"
"joybuywork/internal/config"
"joybuywork/internal/consts"
"joybuywork/internal/plugins/jsonm"
"joybuywork/internal/repository/dao"
"joybuywork/internal/repository/model"
"joybuywork/internal/repository/withdefault"
"joybuywork/internal/utils"
"encoding/hex"
"encoding/json"
"errors"
"fmt"
"log"
"math/rand"
"os"
"os/signal"
"strings"
"sync"
"syscall"
"testing"
"time"
"unicode"
"github.com/rs/xid"
"github.com/sony/sonyflake"
"github.com/valyala/fasthttp"
"gits.branchcn.com/backend/microcode/plugins/alert/webhook"
"go.etcd.io/etcd/api/v3/mvccpb"
"go.etcd.io/etcd/client/v3"
)
var key = "/test"
var cli *clientv3.Client
func init() {
cli, _ = clientv3.New(clientv3.Config{
Endpoints: []string{"127.0.0.1:2379"},
DialTimeout: 5 * time.Second,
})
}
func TestName(t *testing.T) {
for i := 0; i < 1; i++ {
// 监听配置变化
go func() {
ctx := context.Background()
for {
ch, ok := <-cli.Watch(ctx, key, clientv3.WithPrefix())
if !ok {
t.Logf("监听通道有问题")
return
}
if ch.Canceled {
t.Logf("退出")
return
}
t.Logf("Created:%v, Header: %+v, CompactRevision: %d, IsProgressNotify: %v", ch.Created, ch.Header, ch.CompactRevision, ch.IsProgressNotify())
for _, ev := range ch.Events {
switch ev.Type {
case mvccpb.PUT:
fmt.Println(string(ev.Kv.Key), string(ev.Kv.Value))
}
}
}
}()
}
//监听程序退出
ch := make(chan os.Signal, 1)
signal.Notify(ch, syscall.SIGTERM, syscall.SIGINT, syscall.SIGQUIT, syscall.SIGKILL)
select {
case <-ch:
defer close(ch)
}
}
func TestName2(t *testing.T) {
ctx, _ := context.Background(), time.Second
cli.Put(ctx, "/test/ddd", xid.New().String())
cli.Put(ctx, "/test/your_key", xid.New().String())
resp, err := cli.Get(ctx, "/test", clientv3.WithPrefix())
if err != nil {
t.Fatal(err)
return
}
for _, ev := range resp.Kvs {
fmt.Println(string(ev.Key), string(ev.Value))
}
}
func Test_GG(t *testing.T) {
webhook.NewFeiShu(config.Config.Alert.Scenes[0].Url, config.Config.Alert.Scenes[0].Secret).SendText("123123")
}
type R struct {
Code int32
Msg string
Data ListRes
}
type ListRes struct {
List []*ListOne `json:"list"` //列表数据
Total int64 `json:"total"` //数据总条数
}
type ListOne struct {
Id string `json:"id"` //活动ID
Title string `json:"title"` //活动标题
StartDate string `json:"start_date"` //开始时间,如:2023-05-25 15:18:00
EndDate string `json:"end_date"` //结束时间,如:2023-05-25 15:18:00
Status int32 `json:"status"` //发布状态(1-待发布,2-已发布,3-已下线,4-预发布)
CreatedTime int64 `json:"created_time"` //创建时间时间戳
Langs []*ListOneLang `json:"langs"`
Link string `json:"link"` //活动链接
}
type ListOneLang struct {
LangMark string `json:"lang_mark"` //语言标识
TOffset int32 `json:"t_offset"` //时区
Start int64 `json:"start"` //当前语种的开始时间
End int64 `json:"end"` //当前语种的结束时间
}
func TestOpReq(t *testing.T) {
ctx := context.Background()
var data = map[string]interface{}{
"page": 6,
"page_size": 10,
}
body, _ := json.Marshal(data)
token := Md5String(fmt.Sprintf("%s %s", "283c771ced982154abb4dc56828e169fee034bbc", Md5String(string(body))))
req := fasthttp.AcquireRequest()
resp := fasthttp.AcquireResponse()
defer fasthttp.ReleaseRequest(req)
defer fasthttp.ReleaseResponse(resp)
req.Header.SetMethod(fasthttp.MethodPost)
req.Header.Set(fasthttp.HeaderContentType, "application/json")
req.Header.Set("X-Message-Id", fmt.Sprint(ctx.Value(consts.TraceIdKey)))
req.Header.Set(fasthttp.HeaderAuthorization, fmt.Sprintf("Bearer %s", token))
req.SetRequestURI("https://test-tls2s.allapp.link/manage/campaign/campaign_list?project_id=coeeaf6rdj7ie31dgad0")
req.SetBody(body)
client := &fasthttp.Client{
ReadTimeout: 15 * time.Second,
WriteTimeout: 15 * time.Second,
}
err := client.Do(req, resp)
t.Log(err)
t.Log(resp.StatusCode(), string(resp.Body()))
var res R
err = json.Unmarshal(resp.Body(), &res)
t.Log(len(res.Data.List))
for i := range res.Data.List {
t.Log(i)
}
}
type RewardStoreKV struct {
Key string `json:"key" form:"key"` //键
Value string `json:"value" form:"value"` //值
IsShow int32 `json:"is_show" form:"is_show"` //是否展示(0-否,1-是)
}
type RewardStoreLang struct {
Mark string `json:"mark" form:"mark" validate:"required"` //语言标识
Title string `json:"title" form:"title" validate:"required"` //奖品名称
ImageId string `json:"image_id" form:"image_id" validate:"required"` //奖品图片ID
IsDefault int32 `json:"is_default" form:"is_default" validate:"oneof=0 1"` //是否默认语言
WebUrl string `json:"web_url" form:"web_url"` //Web端的跳转地址
AppParam string `json:"app_param" form:"app_param"` //App端的跳转参数
}
func TestOpRewardReq(t *testing.T) {
ctx := context.Background()
var data = map[string]interface{}{
"receive_type": 1,
"url_id": "1",
"kv_data": []*RewardStoreKV{
{
Key: "1",
Value: "3",
IsShow: 0,
},
},
"langs": []*RewardStoreLang{
{
Mark: "en",
Title: "ddfdf",
ImageId: "208663058222764032",
IsDefault: 1,
WebUrl: "",
AppParam: "",
},
},
}
body, _ := json.Marshal(data)
token := Md5String(fmt.Sprintf("%s %s", "283c771ced982154abb4dc56828e169fee034bbc", Md5String(string(body))))
req := fasthttp.AcquireRequest()
resp := fasthttp.AcquireResponse()
defer fasthttp.ReleaseRequest(req)
defer fasthttp.ReleaseResponse(resp)
req.Header.SetMethod(fasthttp.MethodPost)
req.Header.Set(fasthttp.HeaderContentType, "application/json")
req.Header.Set("X-Message-Id", fmt.Sprint(ctx.Value(consts.TraceIdKey)))
req.Header.Set(fasthttp.HeaderAuthorization, fmt.Sprintf("Bearer %s", token))
req.SetRequestURI("https://test-tls2s.allapp.link/manage/campaign/reward_store?project_id=coeeaf6rdj7ie31dgad0")
req.SetBody(body)
client := &fasthttp.Client{
ReadTimeout: 15 * time.Second,
WriteTimeout: 15 * time.Second,
}
err := client.Do(req, resp)
t.Log(err)
t.Log(resp.StatusCode(), string(resp.Body()))
}
func Test343(t *testing.T) {
a := sonyflake.NewSonyflake(sonyflake.Settings{})
id, _ := a.NextID()
id2 := app.SnowFlakeNode.Generate().Int64()
id3 := app.SnowFlake11Node.ID()
id4 := app.SnowFlake11Node.ID()
t.Log(id, id2, id3, id4)
}
// Md5String md5字符串
func Md5String(v string) string {
hash := md5.New()
hash.Write([]byte(v))
b := hash.Sum(nil)
return hex.EncodeToString(b)
}
func Test111(t *testing.T) {
fz := time.FixedZone("GMT", int(6)*3600)
fz8 := time.FixedZone("GMT", int(8)*3600)
t.Log(time.Unix(1733846400, 0).In(fz).Unix())
aa, _ := time.ParseInLocation(time.DateTime, "2024-12-18 14:00:00", fz)
bb, _ := time.ParseInLocation(time.DateTime, "2024-12-18 14:00:00", fz8)
t.Log(aa.Unix(), bb.Unix())
}
func Test23(t *testing.T) {
var a = "/manage/fission/create-group"
var upper bool
b := strings.Map(func(r rune) rune {
if r == '/' || r == '-' {
upper = true
return -1
}
if upper {
upper = false
return unicode.ToUpper(r)
}
return r
}, a)
t.Log(b)
}
type Ads struct {
lc sync.RWMutex
Ad Ad
}
type Ad struct {
Webs []*Web `json:"webs"`
Accounts struct {
Test string `json:"test"`
Prod string `json:"prod"`
} `json:"accounts"`
}
type Web struct {
Host string `json:"host"`
Uris []struct {
Uri string `json:"uri"`
} `json:"uris"`
}
// jr
var ids1 = []int64{143, 374}
var ads1 = &Ads{}
var j1 = "{\"accounts\": {\"test\": \"ca-pub-2821871715805907\",\"prod\": \"ca-pub-2821871715805907\"},\"webs\": [{\"host\": \"https://moads-r.allapp.link\",\"uris\": [{\"uri\": \"/business/helldivers-2-and-dead-island-2-support-studio-toadman-interactive-confirms-layoffs/\"},{\"uri\": \"/business/report-until-dawn-remake-developer-ballistic-moon-is-making-layoffs/\"},{\"uri\": \"/business/creative-uks-latest-fund-offers-up-to-25k-to-north-east-teams/\"},{\"uri\": \"/business/new-steam-tweaks-let-devs-highlight-related-games-and-dlc-on-store-pages/\"},{\"uri\": \"/business/mental-health-in-games-charity-take-this-is-facing-extinction/\"},{\"uri\": \"/finance/yes-network-msg-networks-to-launch-combined-new-york-regional-sports-app/\"},{\"uri\": \"/finance/nvidia-announces-50-billion-stock-buyback/\"},{\"uri\": \"/finance/nvidia-reports-122-revenue-growth-on-surging-demand-for-data-center-chips/\"},{\"uri\": \"/finance/ford-joins-list-of-companies-walking-back-dei-policies/\"},{\"uri\": \"/finance/lego-revenue-jumps-13-in-first-half-of-2024-boosted-by-lego-fortnite-and-diverse-brick-sets/\"},{\"uri\": \"/finance/nordstrom-shares-climb-5-as-earnings-top-estimates-but-retailer-issues-cautious-guidance/\"},{\"uri\": \"/news/civilization-7-interview-firaxis-answers-all-of-our-questions-about-the-anticipated-sequel-gamescom-2024/\"},{\"uri\": \"/news/crimson-desert-is-like-god-of-war-and-dragons-dogma-had-a-baby-gamescom-2024/\"},{\"uri\": \"/news/borderlands-4-announced-with-teaser-trailer-at-opening-night-live-gamescom-2024/\"},{\"uri\": \"/news/indiana-jones-and-the-great-circle-finally-gets-a-release-date-for-xboxand-playstation-gamescom-2024/\"},{\"uri\": \"/news/secret-level-every-video-game-in-the-new-gamescom-trailer/\"},{\"uri\": \"/news/ign-uk-podcast-762-the-best-of-gamescom-2024/\"}]}]}"
// dhg
var ids2 = []int64{361}
var ads2 = &Ads{}
var j2 = "{\"accounts\": {\"test\": \"ca-pub-2821871715805907\",\"prod\": \"ca-pub-2821871715805907\"},\"webs\": [{\"host\": \"https://moads-dh.branchcn.com\",\"uris\": [{\"uri\": \"/post/the-cost-of-temptation/\"},{\"uri\": \"/post/the-temptation-within-a-tale-of-infidelity/\"},{\"uri\": \"/unexpected-encounter/sweet-deceptions-the-story-of-athena-and-dax/\"}]}]}"
func Test2345(t *testing.T) {
err1 := jsonm.Unmarshal([]byte(j1), &ads1.Ad)
err2 := jsonm.Unmarshal([]byte(j2), &ads2.Ad)
t.Log(err1)
t.Log(err2)
}
func Test233445(t *testing.T) {
t.Log(fmt.Sprintf("[%s]的mysql连接使用已经超过设置90%%(%d/%d)", utils.GetIp(), 1, 2))
}
func TestLL(t *testing.T) {
var err error
defer func() {
ll(err)
}()
err = errors.New("test error")
}
func ll(err error) {
var aaa map[string]map[int64]interface{}
_, ok := aaa["dfsdf"][0]
if !ok {
log.Print(123132)
aaa["dfsdf"] = make(map[int64]interface{})
}
}
func TestFissionUser(t *testing.T) {
for i := 0; i < 50; i++ {
var add = make([]*model.FissionUser, 0, 200)
var add2 = make([]*model.FissionUserStat, 0, 200)
for j := 0; j < 100; j++ {
userId := xid.New().String()
one := withdefault.FissionUser(&model.FissionUser{
HashID: xid.New().String(),
CampaignID: 5186,
SubUserID: userId,
UserMark: userId,
UserType: 2,
Source: 1,
})
add = append(add, one)
add2 = append(add2, withdefault.FissionUserStat(&model.FissionUserStat{
UserID: one.ID,
CampaignID: one.CampaignID,
HelpNum: rand.Int63n(100),
}))
}
dao.FissionUser.SubTable(5186).WithContext(context.Background()).Create(add...)
dao.FissionUserStat.WithContext(context.Background()).Create(add2...)
}
}
type StcMap struct {
A int
B int
}
type G struct {
dataMap map[int]*StcMap
}
func (g *G) name() {
c := g.dataMap[1]
g.add(c)
}
func (g *G) add(c *StcMap) {
c.B++
}
func TestUnoCards(t *testing.T) {
g := &G{
dataMap: make(map[int]*StcMap),
}
g.dataMap[1] = &StcMap{
A: 1,
B: 2,
}
g.name()
t.Log(g.dataMap[1].B)
}