Browse Source

benchmark test for user validator

Darien Raymond 6 years ago
parent
commit
1531642768
1 changed files with 26 additions and 6 deletions
  1. 26 6
      proxy/vmess/validator_test.go

+ 26 - 6
proxy/vmess/validator_test.go

@@ -11,17 +11,17 @@ import (
 	. "v2ray.com/core/proxy/vmess"
 )
 
+func toAccount(a *Account) protocol.Account {
+	account, err := a.AsAccount()
+	common.Must(err)
+	return account
+}
+
 func TestUserValidator(t *testing.T) {
 	hasher := protocol.DefaultIDHash
 	v := NewTimedUserValidator(hasher)
 	defer common.Close(v)
 
-	toAccount := func(a *Account) protocol.Account {
-		account, err := a.AsAccount()
-		common.Must(err)
-		return account
-	}
-
 	id := uuid.New()
 	user := &protocol.MemoryUser{
 		Email: "test",
@@ -88,3 +88,23 @@ func TestUserValidator(t *testing.T) {
 		t.Error("remove user twice")
 	}
 }
+
+func BenchmarkUserValidator(b *testing.B) {
+	for i := 0; i < b.N; i++ {
+		hasher := protocol.DefaultIDHash
+		v := NewTimedUserValidator(hasher)
+
+		for j := 0; j < 1500; j++ {
+			id := uuid.New()
+			v.Add(&protocol.MemoryUser{
+				Email: "test",
+				Account: toAccount(&Account{
+					Id:      id.String(),
+					AlterId: 16,
+				}),
+			})
+		}
+
+		common.Close(v)
+	}
+}