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  }