test: add new test to verify concurrent requests handling

The tests issues several requests in parallel to verify that the server
can handle concurrent requests correctly. Right now the test fails with
race detector enabled. This will be fixed by the following patch.

Signed-off-by: Pavel Borzenkov <pavel.borzenkov@gmail.com>
diff --git a/server_test.go b/server_test.go
index 12e65de..721acc6 100644
--- a/server_test.go
+++ b/server_test.go
@@ -2,6 +2,7 @@
 
 import (
 	"io"
+	"sync"
 	"testing"
 )
 
@@ -64,3 +65,31 @@
 	}
 
 }
+
+// test that server handles concurrent requests correctly
+func TestConcurrentRequests(t *testing.T) {
+	client, server := clientServerPair(t)
+	defer client.Close()
+	defer server.Close()
+
+	concurrency := 2
+	var wg sync.WaitGroup
+	wg.Add(concurrency)
+
+	for i := 0; i < concurrency; i++ {
+		go func() {
+			defer wg.Done()
+
+			for j := 0; j < 1024; j++ {
+				f, err := client.Open("/etc/passwd")
+				if err != nil {
+					t.Errorf("failed to open file: %v", err)
+				}
+				if err := f.Close(); err != nil {
+					t.Errorf("failed t close file: %v", err)
+				}
+			}
+		}()
+	}
+	wg.Wait()
+}