github.com/keybase/client/go@v0.0.0-20240520164431-4f512a4c85a3/libkb/file_test.go (about)

     1  // Copyright 2015 Keybase, Inc. All rights reserved. Use of
     2  // this source code is governed by the included BSD license.
     3  
     4  package libkb
     5  
     6  import (
     7  	"github.com/keybase/client/go/logger"
     8  	"os"
     9  	"runtime"
    10  	"sync"
    11  	"testing"
    12  )
    13  
    14  func TestFileSave(t *testing.T) {
    15  	filename := "file_test.tmp"
    16  	defer os.Remove(filename)
    17  
    18  	file := NewFile(filename, []byte("test data"), 0644)
    19  	t.Logf("Saving")
    20  	err := file.Save(logger.NewTestLogger(t))
    21  	if err != nil {
    22  		t.Fatal(err)
    23  	}
    24  }
    25  
    26  func TestFileSaveConcurrent(t *testing.T) {
    27  	if runtime.GOOS == "windows" {
    28  		t.Skip("skip this on windows")
    29  	}
    30  	filename := "file_test.tmp"
    31  	defer os.Remove(filename)
    32  
    33  	log := logger.NewTestLogger(t)
    34  
    35  	var wg sync.WaitGroup
    36  	for i := 0; i < 20; i++ {
    37  		wg.Add(1)
    38  		go func() {
    39  			file := NewFile(filename, []byte("test data"), 0644)
    40  			t.Logf("Saving")
    41  			err := file.Save(log)
    42  			if err != nil {
    43  				t.Errorf("save err: %s", err)
    44  			}
    45  			wg.Done()
    46  		}()
    47  	}
    48  	wg.Wait()
    49  
    50  	var wg2 sync.WaitGroup
    51  	file := NewFile(filename, []byte("test data"), 0644)
    52  	for i := 0; i < 20; i++ {
    53  		wg2.Add(1)
    54  		go func() {
    55  			err := file.Save(log)
    56  			if err != nil {
    57  				t.Errorf("save err: %s", err)
    58  			}
    59  			wg2.Done()
    60  		}()
    61  	}
    62  	wg2.Wait()
    63  }