github.com/gofiber/fiber/v2@v2.47.0/utils/common_test.go (about) 1 // ⚡️ Fiber is an Express inspired web framework written in Go with ☕️ 2 // 🤖 Github Repository: https://github.com/gofiber/fiber 3 // 📌 API Documentation: https://docs.gofiber.io 4 5 package utils 6 7 import ( 8 "crypto/rand" 9 "fmt" 10 "testing" 11 ) 12 13 func Test_FunctionName(t *testing.T) { 14 t.Parallel() 15 AssertEqual(t, "github.com/gofiber/fiber/v2/utils.Test_UUID", FunctionName(Test_UUID)) 16 17 AssertEqual(t, "github.com/gofiber/fiber/v2/utils.Test_FunctionName.func1", FunctionName(func() {})) 18 19 dummyint := 20 20 AssertEqual(t, "int", FunctionName(dummyint)) 21 } 22 23 func Test_UUID(t *testing.T) { 24 t.Parallel() 25 res := UUID() 26 AssertEqual(t, 36, len(res)) 27 AssertEqual(t, true, res != emptyUUID) 28 } 29 30 func Test_UUID_Concurrency(t *testing.T) { 31 t.Parallel() 32 iterations := 1000 33 var res string 34 ch := make(chan string, iterations) 35 results := make(map[string]string) 36 for i := 0; i < iterations; i++ { 37 go func() { 38 ch <- UUID() 39 }() 40 } 41 for i := 0; i < iterations; i++ { 42 res = <-ch 43 results[res] = res 44 } 45 AssertEqual(t, iterations, len(results)) 46 } 47 48 func Test_UUIDv4(t *testing.T) { 49 t.Parallel() 50 res := UUIDv4() 51 AssertEqual(t, 36, len(res)) 52 AssertEqual(t, true, res != emptyUUID) 53 } 54 55 func Test_UUIDv4_Concurrency(t *testing.T) { 56 t.Parallel() 57 iterations := 1000 58 var res string 59 ch := make(chan string, iterations) 60 results := make(map[string]string) 61 for i := 0; i < iterations; i++ { 62 go func() { 63 ch <- UUIDv4() 64 }() 65 } 66 for i := 0; i < iterations; i++ { 67 res = <-ch 68 results[res] = res 69 } 70 AssertEqual(t, iterations, len(results)) 71 } 72 73 // go test -v -run=^$ -bench=Benchmark_UUID -benchmem -count=2 74 75 func Benchmark_UUID(b *testing.B) { 76 var res string 77 b.Run("fiber", func(b *testing.B) { 78 for n := 0; n < b.N; n++ { 79 res = UUID() 80 } 81 AssertEqual(b, 36, len(res)) 82 }) 83 b.Run("default", func(b *testing.B) { 84 rnd := make([]byte, 16) 85 _, err := rand.Read(rnd) 86 AssertEqual(b, nil, err) 87 for n := 0; n < b.N; n++ { 88 res = fmt.Sprintf("%x-%x-%x-%x-%x", rnd[0:4], rnd[4:6], rnd[6:8], rnd[8:10], rnd[10:]) 89 } 90 AssertEqual(b, 36, len(res)) 91 }) 92 } 93 94 func Test_ConvertToBytes(t *testing.T) { 95 t.Parallel() 96 AssertEqual(t, 0, ConvertToBytes("")) 97 AssertEqual(t, 42, ConvertToBytes("42")) 98 AssertEqual(t, 42, ConvertToBytes("42b")) 99 AssertEqual(t, 42, ConvertToBytes("42B")) 100 AssertEqual(t, 42, ConvertToBytes("42 b")) 101 AssertEqual(t, 42, ConvertToBytes("42 B")) 102 103 AssertEqual(t, 42*1000, ConvertToBytes("42k")) 104 AssertEqual(t, 42*1000, ConvertToBytes("42K")) 105 AssertEqual(t, 42*1000, ConvertToBytes("42kb")) 106 AssertEqual(t, 42*1000, ConvertToBytes("42KB")) 107 AssertEqual(t, 42*1000, ConvertToBytes("42 kb")) 108 AssertEqual(t, 42*1000, ConvertToBytes("42 KB")) 109 110 AssertEqual(t, 42*1000000, ConvertToBytes("42M")) 111 AssertEqual(t, int(42.5*1000000), ConvertToBytes("42.5MB")) 112 AssertEqual(t, 42*1000000000, ConvertToBytes("42G")) 113 114 AssertEqual(t, 0, ConvertToBytes("string")) 115 AssertEqual(t, 0, ConvertToBytes("MB")) 116 } 117 118 // go test -v -run=^$ -bench=Benchmark_ConvertToBytes -benchmem -count=2 119 func Benchmark_ConvertToBytes(b *testing.B) { 120 var res int 121 b.Run("fiber", func(b *testing.B) { 122 for n := 0; n < b.N; n++ { 123 res = ConvertToBytes("42B") 124 } 125 AssertEqual(b, 42, res) 126 }) 127 }