forked from openshift/oauth-proxy
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Provide graceful shutdown of file watcher in tests
This test failure from openshift#92 inspired this change: https://travis-ci.org/bitly/google_auth_proxy/jobs/62425336 2015/05/13 16:27:33 using authenticated emails file /tmp/test_auth_emails_952353477 2015/05/13 16:27:33 watching /tmp/test_auth_emails_952353477 for updates 2015/05/13 16:27:33 validating: is [email protected] valid? true 2015/05/13 16:27:33 watching interrupted on event: "/tmp/test_auth_emails_952353477": CHMOD 2015/05/13 16:27:33 watching resumed for /tmp/test_auth_emails_952353477 2015/05/13 16:27:33 reloading after event: "/tmp/test_auth_emails_952353477": CHMOD 2015/05/13 16:27:33 watching interrupted on event: "/tmp/test_auth_emails_952353477": REMOVE 2015/05/13 16:27:33 validating: is [email protected] valid? false 2015/05/13 16:27:33 watching resumed for /tmp/test_auth_emails_952353477 2015/05/13 16:27:33 reloading after event: "/tmp/test_auth_emails_952353477": REMOVE 2015/05/13 16:27:33 failed opening authenticated-emails-file="/tmp/test_auth_emails_952353477", open /tmp/test_auth_emails_952353477: no such file or directory I believe that what happened was that the call to reload the file after the second "reloading after event" lost the race when the test shut down and the file was removed. This change introduces a `done` channel that ensures outstanding actions complete and the watcher exits before the test removes the file.
- Loading branch information
Mike Bland
committed
May 13, 2015
1 parent
254b26d
commit 6a0f119
Showing
5 changed files
with
27 additions
and
17 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -9,6 +9,7 @@ import ( | |
|
||
type ValidatorTest struct { | ||
auth_email_file *os.File | ||
done chan bool | ||
} | ||
|
||
func NewValidatorTest(t *testing.T) *ValidatorTest { | ||
|
@@ -18,13 +19,21 @@ func NewValidatorTest(t *testing.T) *ValidatorTest { | |
if err != nil { | ||
t.Fatal("failed to create temp file: " + err.Error()) | ||
} | ||
vt.done = make(chan bool) | ||
return vt | ||
} | ||
|
||
func (vt *ValidatorTest) TearDown() { | ||
vt.done <- true | ||
os.Remove(vt.auth_email_file.Name()) | ||
} | ||
|
||
func (vt *ValidatorTest) NewValidator(domains []string, | ||
updated chan<- bool) func(string) bool { | ||
return newValidatorImpl(domains, vt.auth_email_file.Name(), | ||
vt.done, func() { updated <- true }) | ||
} | ||
|
||
// This will close vt.auth_email_file. | ||
func (vt *ValidatorTest) WriteEmails(t *testing.T, emails []string) { | ||
defer vt.auth_email_file.Close() | ||
|
@@ -41,7 +50,7 @@ func TestValidatorEmpty(t *testing.T) { | |
|
||
vt.WriteEmails(t, []string(nil)) | ||
domains := []string(nil) | ||
validator := NewValidator(domains, vt.auth_email_file.Name()) | ||
validator := vt.NewValidator(domains, nil) | ||
|
||
if validator("[email protected]") { | ||
t.Error("nothing should validate when the email and " + | ||
|
@@ -55,7 +64,7 @@ func TestValidatorSingleEmail(t *testing.T) { | |
|
||
vt.WriteEmails(t, []string{"[email protected]"}) | ||
domains := []string(nil) | ||
validator := NewValidator(domains, vt.auth_email_file.Name()) | ||
validator := vt.NewValidator(domains, nil) | ||
|
||
if !validator("[email protected]") { | ||
t.Error("email should validate") | ||
|
@@ -72,7 +81,7 @@ func TestValidatorSingleDomain(t *testing.T) { | |
|
||
vt.WriteEmails(t, []string(nil)) | ||
domains := []string{"example.com"} | ||
validator := NewValidator(domains, vt.auth_email_file.Name()) | ||
validator := vt.NewValidator(domains, nil) | ||
|
||
if !validator("[email protected]") { | ||
t.Error("email should validate") | ||
|
@@ -91,7 +100,7 @@ func TestValidatorMultipleEmailsMultipleDomains(t *testing.T) { | |
"[email protected]", | ||
}) | ||
domains := []string{"example0.com", "example1.com"} | ||
validator := NewValidator(domains, vt.auth_email_file.Name()) | ||
validator := vt.NewValidator(domains, nil) | ||
|
||
if !validator("[email protected]") { | ||
t.Error("email from first domain should validate") | ||
|
@@ -117,7 +126,7 @@ func TestValidatorComparisonsAreCaseInsensitive(t *testing.T) { | |
|
||
vt.WriteEmails(t, []string{"[email protected]"}) | ||
domains := []string{"Frobozz.Com"} | ||
validator := NewValidator(domains, vt.auth_email_file.Name()) | ||
validator := vt.NewValidator(domains, nil) | ||
|
||
if !validator("[email protected]") { | ||
t.Error("loaded email addresses are not lower-cased") | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -34,8 +34,7 @@ func TestValidatorOverwriteEmailListViaCopyingOver(t *testing.T) { | |
vt.WriteEmails(t, []string{"[email protected]"}) | ||
domains := []string(nil) | ||
updated := make(chan bool) | ||
validator := newValidatorImpl(domains, vt.auth_email_file.Name(), | ||
func() { updated <- true }) | ||
validator := vt.NewValidator(domains, updated) | ||
|
||
if !validator("[email protected]") { | ||
t.Error("email in list should validate") | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -51,8 +51,7 @@ func TestValidatorOverwriteEmailListDirectly(t *testing.T) { | |
}) | ||
domains := []string(nil) | ||
updated := make(chan bool) | ||
validator := newValidatorImpl(domains, vt.auth_email_file.Name(), | ||
func() { updated <- true }) | ||
validator := vt.NewValidator(domains, updated) | ||
|
||
if !validator("[email protected]") { | ||
t.Error("first email in list should validate") | ||
|
@@ -89,8 +88,7 @@ func TestValidatorOverwriteEmailListViaRenameAndReplace(t *testing.T) { | |
vt.WriteEmails(t, []string{"[email protected]"}) | ||
domains := []string(nil) | ||
updated := make(chan bool) | ||
validator := newValidatorImpl(domains, vt.auth_email_file.Name(), | ||
func() { updated <- true }) | ||
validator := vt.NewValidator(domains, updated) | ||
|
||
if !validator("[email protected]") { | ||
t.Error("email in list should validate") | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters