diff --git a/Makefile b/Makefile index cd017f5..92fe4da 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ run-debug: debug ${GOPATH}/bin/ipe --config ${GOPATH}/src/github.com/dimiro1/ipe/config.json -logtostderr=true -v=2 test: - GO15VENDOREXPERIMENT=1 go test `go list ./... | grep -v vendor` + GO15VENDOREXPERIMENT=1 go test -bench . `go list ./... | grep -v vendor | grep -v functional | grep -v github.com/dimiro1/ipe$$` dev-deps: go get github.com/pusher/pusher-http-go diff --git a/utils/utils.go b/utils/utils.go index a4b64ad..af6748f 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -14,6 +14,12 @@ import ( "regexp" ) +var validChannelName *regexp.Regexp + +func init() { + validChannelName = regexp.MustCompile("^[A-Za-z0-9_\\-=@,.;]+$") +} + // HashMAC Calculates the MAC signing with the given key and returns the hexadecimal encoded Result func HashMAC(message, key []byte) string { mac := hmac.New(sha256.New, key) @@ -25,18 +31,10 @@ func HashMAC(message, key []byte) string { // GenerateSessionID Generate a new random Hash func GenerateSessionID() string { - MAX := math.MaxInt64 - - return fmt.Sprintf("%d.%d", rand.Intn(MAX), rand.Intn(MAX)) + return fmt.Sprintf("%d.%d", rand.Intn(math.MaxInt64), rand.Intn(math.MaxInt64)) } // IsChannelNameValid Verify if the channel name is valid func IsChannelNameValid(channelName string) bool { - matched, err := regexp.MatchString("^[A-Za-z0-9_\\-=@,.;]+$", channelName) - - if err == nil && matched { - return true - } - - return false + return validChannelName.Match([]byte(channelName)) } diff --git a/utils/utils_test.go b/utils/utils_test.go index 2cbb058..b210500 100644 --- a/utils/utils_test.go +++ b/utils/utils_test.go @@ -9,6 +9,18 @@ import ( "testing" ) +func BenchmarkGenerateSession(b *testing.B) { + for i := 0; i < b.N; i++ { + GenerateSessionID() + } +} + +func BenchmarkIsChannelNameValid(b *testing.B) { + for i := 0; i < b.N; i++ { + IsChannelNameValid("hello-world") + } +} + func TestGenerateSession(t *testing.T) { sessionID := GenerateSessionID()