fix: msg channel rename, add warn log when set default param

Change-Id: I925216cf319d005a05b6e2760578e81e3d33fcb3
This commit is contained in:
buyuxiang
2022-01-25 20:08:28 +08:00
parent a89d83869c
commit ac5df11857
2 changed files with 23 additions and 18 deletions
+13 -13
View File
@@ -149,19 +149,19 @@ const (
) )
type Rendezvous struct { type Rendezvous struct {
Name string `json:"name" yaml:"name"` // required Name string `json:"name" yaml:"name"` // required
Percent float32 `json:"percent,omitempty" yaml:"percent,omitempty"` // default to 1(100%) Percent float32 `json:"percent,omitempty" yaml:"percent,omitempty"` // default to 1(100%)
Number int64 `json:"number,omitempty" yaml:"number,omitempty"` Number int64 `json:"number,omitempty" yaml:"number,omitempty"`
Timeout int64 `json:"timeout,omitempty" yaml:"timeout,omitempty"` // milliseconds Timeout int64 `json:"timeout,omitempty" yaml:"timeout,omitempty"` // milliseconds
cnt int64 cnt int64
releasedFlag uint32 releasedFlag uint32
spawnDoneFlag uint32 spawnDoneFlag uint32
wg sync.WaitGroup wg sync.WaitGroup
msg chan struct{} timerResetChan chan struct{}
activateChan chan struct{} activateChan chan struct{}
releaseChan chan struct{} releaseChan chan struct{}
once *sync.Once once *sync.Once
lock sync.Mutex lock sync.Mutex
} }
// TCase represents testcase data structure. // TCase represents testcase data structure.
+10 -5
View File
@@ -365,7 +365,7 @@ func (r *caseRunner) runStepRendezvous(rendezvous *Rendezvous) (stepResult *step
if atomic.LoadInt64(&rendezvous.cnt) < rendezvous.Number { if atomic.LoadInt64(&rendezvous.cnt) < rendezvous.Number {
atomic.AddInt64(&rendezvous.cnt, 1) atomic.AddInt64(&rendezvous.cnt, 1)
rendezvous.wg.Done() rendezvous.wg.Done()
rendezvous.msg <- struct{}{} rendezvous.timerResetChan <- struct{}{}
} }
rendezvous.lock.Unlock() rendezvous.lock.Unlock()
} }
@@ -397,9 +397,9 @@ func (r *Rendezvous) reset() {
r.cnt = 0 r.cnt = 0
r.releasedFlag = 0 r.releasedFlag = 0
r.wg.Add(int(r.Number)) r.wg.Add(int(r.Number))
// msg channel will not be closed, init only once // timerResetChan channel will not be closed, thus init only once
if r.msg == nil { if r.timerResetChan == nil {
r.msg = make(chan struct{}) r.timerResetChan = make(chan struct{})
} }
r.activateChan = make(chan struct{}) r.activateChan = make(chan struct{})
r.releaseChan = make(chan struct{}) r.releaseChan = make(chan struct{})
@@ -437,6 +437,11 @@ func initRendezvous(testcase *TestCase, total int64) []*Rendezvous {
} else if rendezvous.Number > 0 && rendezvous.Number <= total && rendezvous.Percent == 0 { } else if rendezvous.Number > 0 && rendezvous.Number <= total && rendezvous.Percent == 0 {
rendezvous.Percent = float32(rendezvous.Number) / float32(total) rendezvous.Percent = float32(rendezvous.Number) / float32(total)
} else { } else {
log.Warn().
Str("name", rendezvous.Name).
Int64("default number", total).
Float32("default percent", defaultRendezvousPercent).
Msg("rendezvous parameter error, set to default value")
rendezvous.Number = total rendezvous.Number = total
rendezvous.Percent = defaultRendezvousPercent rendezvous.Percent = defaultRendezvousPercent
} }
@@ -473,7 +478,7 @@ func waitSingleRendezvous(rendezvous *Rendezvous, rendezvousList []*Rendezvous,
}() }()
for !rendezvous.isReleased() { for !rendezvous.isReleased() {
select { select {
case <-rendezvous.msg: case <-rendezvous.timerResetChan:
timer.Reset(timeout) timer.Reset(timeout)
case <-stop: case <-stop:
rendezvous.setReleased() rendezvous.setReleased()