mirror of
				https://github.com/coredns/coredns.git
				synced 2025-10-31 10:13:14 -04:00 
			
		
		
		
	Client-side of gRPC proxy (#511)
* WIP: Client-side of gRPC proxy * Add tests * gofmt * Implement OnShutdown; add a little logging * Update for context in Exchange change * go fmt * Update README * Review comments * Compiling is good * More README improvements
This commit is contained in:
		| @@ -8,6 +8,8 @@ import ( | ||||
| 	"testing" | ||||
| 	"time" | ||||
|  | ||||
| 	"github.com/miekg/coredns/middleware/test" | ||||
|  | ||||
| 	"github.com/mholt/caddy" | ||||
| ) | ||||
|  | ||||
| @@ -96,6 +98,14 @@ func writeTmpFile(t *testing.T, data string) (string, string) { | ||||
| } | ||||
|  | ||||
| func TestProxyParse(t *testing.T) { | ||||
| 	rmFunc, cert, key, ca := getPEMFiles(t) | ||||
| 	defer rmFunc() | ||||
|  | ||||
| 	grpc1 := "proxy . 8.8.8.8:53 {\n protocol grpc " + ca + "\n}" | ||||
| 	grpc2 := "proxy . 8.8.8.8:53 {\n protocol grpc " + cert + " " + key + "\n}" | ||||
| 	grpc3 := "proxy . 8.8.8.8:53 {\n protocol grpc " + cert + " " + key + " " + ca + "\n}" | ||||
| 	grpc4 := "proxy . 8.8.8.8:53 {\n protocol grpc " + key + "\n}" | ||||
|  | ||||
| 	tests := []struct { | ||||
| 		inputUpstreams string | ||||
| 		shouldErr      bool | ||||
| @@ -174,8 +184,84 @@ proxy . 8.8.8.8:53 { | ||||
| 		}, | ||||
| 		{ | ||||
| 			` | ||||
| proxy . 8.8.8.8:53 { | ||||
| 	protocol grpc | ||||
| }`, | ||||
| 			false, | ||||
| 		}, | ||||
| 		{ | ||||
| 			` | ||||
| proxy . 8.8.8.8:53 { | ||||
| 	protocol grpc insecure | ||||
| }`, | ||||
| 			false, | ||||
| 		}, | ||||
| 		{ | ||||
| 			` | ||||
| proxy . 8.8.8.8:53 { | ||||
| 	protocol grpc a b c d | ||||
| }`, | ||||
| 			true, | ||||
| 		}, | ||||
| 		{ | ||||
| 			grpc1, | ||||
| 			false, | ||||
| 		}, | ||||
| 		{ | ||||
| 			grpc2, | ||||
| 			false, | ||||
| 		}, | ||||
| 		{ | ||||
| 			grpc3, | ||||
| 			false, | ||||
| 		}, | ||||
| 		{ | ||||
| 			grpc4, | ||||
| 			true, | ||||
| 		}, | ||||
| 		{ | ||||
| 			` | ||||
| proxy . 8.8.8.8:53 { | ||||
| 	protocol foobar | ||||
| }`, | ||||
| 			true, | ||||
| 		}, | ||||
| 		{ | ||||
| 			`proxy`, | ||||
| 			true, | ||||
| 		}, | ||||
| 		{ | ||||
| 			` | ||||
| proxy . 8.8.8.8:53 { | ||||
| 	protocol foobar | ||||
| }`, | ||||
| 			true, | ||||
| 		}, | ||||
| 		{ | ||||
| 			` | ||||
| proxy . 8.8.8.8:53 { | ||||
| 	policy | ||||
| }`, | ||||
| 			true, | ||||
| 		}, | ||||
| 		{ | ||||
| 			` | ||||
| proxy . 8.8.8.8:53 { | ||||
| 	fail_timeout | ||||
| }`, | ||||
| 			true, | ||||
| 		}, | ||||
| 		{ | ||||
| 			` | ||||
| proxy . 8.8.8.8:53 { | ||||
| 	fail_timeout junky | ||||
| }`, | ||||
| 			true, | ||||
| 		}, | ||||
| 		{ | ||||
| 			` | ||||
| proxy . 8.8.8.8:53 { | ||||
| 	health_check | ||||
| }`, | ||||
| 			true, | ||||
| 		}, | ||||
| @@ -184,7 +270,7 @@ proxy . 8.8.8.8:53 { | ||||
| 		c := caddy.NewTestController("dns", test.inputUpstreams) | ||||
| 		_, err := NewStaticUpstreams(&c.Dispenser) | ||||
| 		if (err != nil) != test.shouldErr { | ||||
| 			t.Errorf("Test %d expected no error, got %v", i+1, err) | ||||
| 			t.Errorf("Test %d expected no error, got %v for %s", i+1, err, test.inputUpstreams) | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| @@ -264,3 +350,16 @@ junky resolve.conf | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func getPEMFiles(t *testing.T) (rmFunc func(), cert, key, ca string) { | ||||
| 	tempDir, rmFunc, err := test.WritePEMFiles("") | ||||
| 	if err != nil { | ||||
| 		t.Fatalf("Could not write PEM files: %s", err) | ||||
| 	} | ||||
|  | ||||
| 	cert = filepath.Join(tempDir, "cert.pem") | ||||
| 	key = filepath.Join(tempDir, "key.pem") | ||||
| 	ca = filepath.Join(tempDir, "ca.pem") | ||||
|  | ||||
| 	return | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user