modifying readFileContentInLoop to display iteratively file content and eventually check initial content

pull/6/head
Salvatore Dario Minonne 2015-10-20 16:09:55 +02:00
parent 961a02a602
commit e2c315ee99
5 changed files with 25 additions and 26 deletions

View File

@ -24,3 +24,4 @@ up_to
valid_flag
retry_time
file_content_in_loop
break_on_expected_content

View File

@ -12,5 +12,5 @@
# See the License for the specific language governing permissions and
# limitations under the License.
FROM gcr.io/google_containers/mounttest:0.5
FROM gcr.io/google_containers/mounttest:0.6
USER 1001

View File

@ -1,4 +1,4 @@
TAG = 0.3
TAG = 0.4
PREFIX = gcr.io/google_containers
all: push

View File

@ -1,4 +1,4 @@
TAG = 0.5
TAG = 0.6
PREFIX = gcr.io/google_containers
all: push

View File

@ -37,6 +37,7 @@ var (
readFileContentPath = ""
readFileContentInLoopPath = ""
retryDuration = 180
breakOnExpectedContent = true
)
func init() {
@ -51,6 +52,7 @@ func init() {
flag.StringVar(&readFileContentPath, "file_content", "", "Path to read the file content from")
flag.StringVar(&readFileContentInLoopPath, "file_content_in_loop", "", "Path to read the file content in loop from")
flag.IntVar(&retryDuration, "retry_time", 180, "Retry time during the loop")
flag.BoolVar(&breakOnExpectedContent, "break_on_expected_content", true, "Break out of loop on expected content, (use with --file_content_in_loop flag only)")
}
// This program performs some tests on the filesystem as dictated by the
@ -120,7 +122,7 @@ func main() {
errs = append(errs, err)
}
err = readFileContentInLoop(readFileContentInLoopPath, retryDuration)
err = readFileContentInLoop(readFileContentInLoopPath, retryDuration, breakOnExpectedContent)
if err != nil {
errs = append(errs, err)
}
@ -217,13 +219,14 @@ func readFileContent(path string) error {
return nil
}
const initialContent string = "mount-tester new file\n"
func readWriteNewFile(path string, perm os.FileMode) error {
if path == "" {
return nil
}
content := "mount-tester new file\n"
err := ioutil.WriteFile(path, []byte(content), perm)
err := ioutil.WriteFile(path, []byte(initialContent), perm)
if err != nil {
fmt.Printf("error writing new file %q: %v\n", path, err)
return err
@ -232,19 +235,14 @@ func readWriteNewFile(path string, perm os.FileMode) error {
return readFileContent(path)
}
func readFileContentInLoop(path string, retryDuration int) error {
func readFileContentInLoop(path string, retryDuration int, breakOnExpectedContent bool) error {
if path == "" {
return nil
}
var content []byte
content = testFileContent(path, retryDuration)
fmt.Printf("content of file %q: %v\n", path, string(content))
return nil
return testFileContent(path, retryDuration, breakOnExpectedContent)
}
func testFileContent(filePath string, retryDuration int) []byte {
func testFileContent(filePath string, retryDuration int, breakOnExpectedContent bool) error {
var (
contentBytes []byte
err error
@ -253,18 +251,18 @@ func testFileContent(filePath string, retryDuration int) []byte {
retryTime := time.Second * time.Duration(retryDuration)
for start := time.Now(); time.Since(start) < retryTime; time.Sleep(2 * time.Second) {
contentBytes, err = ioutil.ReadFile(filePath)
if err == nil {
//Expected content "mount-tester new file\n", length 22
if len(contentBytes) == 22 {
break
} else {
fmt.Printf("Unexpected length of file: found %d, expected %d.Retry", len(contentBytes), 22)
}
} else {
fmt.Printf("Error read file %s: %v, retry", filePath, err)
if err != nil {
fmt.Printf("Error reading file %s: %v, retrying\n", filePath, err)
continue
}
fmt.Printf("content of file %q: %v\n", filePath, string(contentBytes))
if breakOnExpectedContent {
if string(contentBytes) != initialContent {
fmt.Printf("Unexpected content. Expected: %s. Retrying", initialContent)
continue
}
break
}
}
return contentBytes
return err
}