| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- package context_test
- import (
- "context"
- "fmt"
- "testing"
- "time"
- "gitee.com/wecisecode/util/logger"
- )
- func TestContext(t *testing.T) {
- ctx, cancel := context.WithCancelCause(context.Background())
- cancel(fmt.Errorf("%s", "cancel"))
- go func() {
- for {
- select {
- case <-ctx.Done():
- err := ctx.Err()
- if err == context.Canceled {
- err = context.Cause(ctx)
- }
- logger.Info("context done", err)
- default:
- }
- time.Sleep(5 * time.Second)
- }
- }()
- time.Sleep(1 * time.Hour)
- }
- func TestContextDone(t *testing.T) {
- ctx, cancel := context.WithCancelCause(context.Background())
- go func() {
- for {
- select {
- case <-ctx.Done():
- err := ctx.Err()
- if err == context.Canceled {
- err = context.Cause(ctx)
- }
- logger.Info("context done 1", err)
- default:
- }
- time.Sleep(5 * time.Second)
- }
- }()
- go func() {
- for {
- select {
- case <-ctx.Done():
- err := ctx.Err()
- if err == context.Canceled {
- err = context.Cause(ctx)
- }
- logger.Info("context done 2", err)
- default:
- }
- time.Sleep(5 * time.Second)
- }
- }()
- go func() {
- for {
- select {
- case <-ctx.Done():
- err := ctx.Err()
- if err == context.Canceled {
- err = context.Cause(ctx)
- }
- logger.Info("context done 3", err)
- default:
- }
- time.Sleep(5 * time.Second)
- }
- }()
- cancel(fmt.Errorf("%s", "cancel"))
- time.Sleep(1 * time.Hour)
- }
|