Skip to content

Commit

Permalink
trice cache testing wip
Browse files Browse the repository at this point in the history
  • Loading branch information
rokath committed Oct 7, 2024
1 parent e3abe3f commit 7abd9df
Show file tree
Hide file tree
Showing 3 changed files with 261 additions and 63 deletions.
61 changes: 27 additions & 34 deletions docs/TriceCacheSpec.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,37 +45,30 @@ When `id.TriceCacheEnabled` is true (applied `-cache` CLI switch) and `~/.trice/

## Tests

Nr | Action | cCache | iCache | ID state | Edid state | Test function
---|----------|---------|---------|------------|------------|--------------
0 | 0:clean | 0:inval | 0:inval | 0:cleaned | 0:not | T
1 | 0:clean | 0:inval | 0:inval | 0:cleaned | 1:yes | Test_1_00001_clean_on_invalid_cCache_invalid_iCache_cleaned_edited_file
2 | 0:clean | 0:inval | 0:inval | 1:inserted | 0:not | T
3 | 0:clean | 0:inval | 0:inval | 1:inserted | 1:yes | Test_3_00011_clean_on_inalid_cCache_invalid_iCache_inserted_edited_file
4 | 0:clean | 0:inval | 1:valid | 0:cleaned | 0:not | T
5 | 0:clean | 0:inval | 1:valid | 0:cleaned | 1:yes |
6 | 0:clean | 0:inval | 1:valid | 1:inserted | 0:not | T
7 | 0:clean | 0:inval | 1:valid | 1:inserted | 1:yes | T
8 | 0:clean | 1:valid | 0:inval | 0:cleaned | 0:not | T
9 | 0:clean | 1:valid | 0:inval | 0:cleaned | 1:yes | T
10 | 0:clean | 1:valid | 0:inval | 1:inserted | 0:not | T
11 | 0:clean | 1:valid | 0:inval | 1:inserted | 1:yes | T
12 | 0:clean | 1:valid | 1:valid | 0:cleaned | 0:not | T
13 | 0:clean | 1:valid | 1:valid | 0:cleaned | 1:yes | T
14 | 0:clean | 1:valid | 1:valid | 1:inserted | 0:not | T
15 | 0:clean | 1:valid | 1:valid | 1:inserted | 1:yes | T
16 | 1:insert | 0:inval | 0:inval | 0:cleaned | 0:not |
17 | 1:insert | 0:inval | 0:inval | 0:cleaned | 1:yes | Test_17_10001_insert_on_inalid_cCache_invalid_iCache_clean_edited_file
18 | 1:insert | 0:inval | 0:inval | 1:inserted | 0:not | T
19 | 1:insert | 0:inval | 0:inval | 1:inserted | 1:yes | Test_19_10011_insert_on_invalid_cCache_invalid_iCache_inserted_edited_file
20 | 1:insert | 0:inval | 1:valid | 0:cleaned | 0:not | T
21 | 1:insert | 0:inval | 1:valid | 0:cleaned | 1:yes |
22 | 1:insert | 0:inval | 1:valid | 1:inserted | 0:not | T
23 | 1:insert | 0:inval | 1:valid | 1:inserted | 1:yes |
24 | 1:insert | 1:valid | 0:inval | 0:cleaned | 0:not | T
25 | 1:insert | 1:valid | 0:inval | 0:cleaned | 1:yes | T
26 | 1:insert | 1:valid | 0:inval | 1:inserted | 0:not | T
27 | 1:insert | 1:valid | 0:inval | 1:inserted | 1:yes | T
28 | 1:insert | 1:valid | 1:valid | 0:cleaned | 0:not | T
29 | 1:insert | 1:valid | 1:valid | 0:cleaned | 1:yes | T
30 | 1:insert | 1:valid | 1:valid | 1:inserted | 0:not | T
31 | 1:insert | 1:valid | 1:valid | 1:inserted | 1:yes | T
Nr | Action | cCache | iCache | ID state | Edid state | Test function
------|----------|---------|---------|------------|------------|------------------------------------------------------------------------------
0,1 | 0:clean | 0:inval | 0:inval | 0:cleaned | X:any | Test_0_1_0000X_clean_on_invalid_cCache_invalid_iCache_cleaned_file
2,3 | 0:clean | 0:inval | 0:inval | 1:inserted | X:any | Test_2_3_00011_clean_on_inalid_cCache_invalid_iCache_inserted_edited_file
4,5 | 0:clean | 0:inval | 1:valid | 0:cleaned | X:any | Test_4_5_0010X_clean_on_invalid_cCache_valid_iCache_cleaned_file
6 | 0:clean | 0:inval | 1:valid | 1:inserted | 0:not | Test_6_00110_clean_on_invalid_cCache_valid_iCache_inserted_not_edited_file
7 | 0:clean | 0:inval | 1:valid | 1:inserted | 1:yes | Test_7_00111_clean_on_invalid_cCache_valid_iCache_inserted_edited_file
8 | 0:clean | 1:valid | 0:inval | 0:cleaned | 0:not | Test_8_01000_clean_on_valid_cCache_invalid_iCache_cleaned_not_edited_file
9 | 0:clean | 1:valid | 0:inval | 0:cleaned | 1:yes | Test_9_01001_clean_on_valid_cCache_invalid_iCache_cleaned_edited_file
10 | 0:clean | 1:valid | 0:inval | 1:inserted | 0:not | Test_10_01011_clean_on_valid_cCache_invalid_iCache_inserted_not_edited_file
11 | 0:clean | 1:valid | 0:inval | 1:inserted | 1:yes | Test_11_01011_clean_on_valid_cCache_invalid_iCache_inserted_edited_file
12 | 0:clean | 1:valid | 1:valid | 0:cleaned | 0:not | Test_12_01100_clean_on_valid_iCache_valid_cCache_clean_file_not_edited
13 | 0:clean | 1:valid | 1:valid | 0:cleaned | 1:yes | Test_13_01101_clean_on_valid_iCache_valid_cCache_clean_file_edited
14 | 0:clean | 1:valid | 1:valid | 1:inserted | 0:not | Test_14_01110_clean_on_valid_iCache_valid_cCache_inserted_file_not_edited
15 | 0:clean | 1:valid | 1:valid | 1:inserted | 1:yes | Test_15_01111_clean_on_valid_iCache_valid_cCache_inserted_file_edited
16,17 | 1:insert | 0:inval | 0:inval | 0:cleaned | X:any | Test_16_17_1000X_insert_on_invalid_cCache_invalid_iCache_cleaned_file
18,19 | 1:insert | 0:inval | 0:inval | 1:inserted | X:any | Test_18_19_1001X_insert_on_invalid_cCache_invalid_iCache_inserted_edited_file
20,21 | 1:insert | 0:inval | 1:valid | 0:cleaned | X:any | Test_20_21_1010X_insert_on_invalid_cCache_valid_iCache_cleaned_file
22 | 1:insert | 0:inval | 1:valid | 1:inserted | 0:not | Test_22_10100_insert_on_invalid_cCache_valid_iCache_inserted_not_edited_file
23 | 1:insert | 0:inval | 1:valid | 1:inserted | 1:yes | Test_23_10101_insert_on_invalid_cCache_valid_iCache_inserted_edited_file
24 | 1:insert | 1:valid | 0:inval | 0:cleaned | 0:not | Test_24_11000_insert_on_valid_cCache_invalid_iCache_cleaned_not_edited_file
25 | 1:insert | 1:valid | 0:inval | 0:cleaned | 1:yes | Test_25_11001_insert_on_valid_cCache_invalid_iCache_cleaned_edited_file
26,27 | 1:insert | 1:valid | 0:inval | 1:inserted | X:any | Test_26_27_1010X_insert_on_invalid_cCache_valid_iCache_cleaned_file
28 | 1:insert | 1:valid | 1:valid | 0:cleaned | 0:not | Test_28_11100_insert_on_valid_cCache_valid_iCache_cleaned_not_edited_file
29 | 1:insert | 1:valid | 1:valid | 0:cleaned | 1:yes | Test_29_11100_insert_on_valid_cCache_valid_iCache_cleaned_edited_file
30 | 1:insert | 1:valid | 1:valid | 1:inserted | 0:not | T
31 | 1:insert | 1:valid | 1:valid | 1:inserted | 1:yes | T
111 changes: 87 additions & 24 deletions internal/id/cachedClean_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,9 @@ func TestCleanOnInsertedWithoutCacheFolder(t *testing.T) {
assertFileNotExists(t, fSys, iCache) // check for not existing iCache
}

func Test_1_00001_clean_on_invalid_cCache_invalid_iCache_cleaned_edited_file(t *testing.T) {
func Test_0_1_0000X_clean_on_invalid_cCache_invalid_iCache_cleaned_file(t *testing.T) {
defer setupCacheTest(t)()
assertFileCreate(t, fSys, sFname, `trice("msg:value=%d\n", -1);`) // cleaned, edit
assertFileCreate(t, fSys, sFname, `trice("msg:value=%d\n", -1);`) // cleaned
sT0 := mTime(t, fSys, sFname) // keep mtime

assert.Nil(t, args.Handler(io.Writer(&b), fSys, []string{"trice", "clean", "-cache", "-til", id.FnJSON, "-li", id.LIFnJSON, "-src", sFname}))
Expand All @@ -48,9 +48,9 @@ func Test_1_00001_clean_on_invalid_cCache_invalid_iCache_cleaned_edited_file(t *
assertFileNotExists(t, fSys, iCache) // check for not existing iCache
}

func Test_3_00011_clean_on_inalid_cCache_invalid_iCache_inserted_edited_file(t *testing.T) {
func Test_2_3_0001X_clean_on_inalid_cCache_invalid_iCache_inserted_X_file(t *testing.T) {
defer setupCacheTest(t)()
assertFileCreate(t, fSys, sFname, `trice(iD(999), "msg:value=%d\n", -1);`) // inserted, edit
assertFileCreate(t, fSys, sFname, `trice(iD(999), "msg:value=%d\n", -1);`) // inserted

assert.Nil(t, args.Handler(io.Writer(&b), fSys, []string{"trice", "clean", "-cache", "-til", id.FnJSON, "-li", id.LIFnJSON, "-src", sFname}))

Expand All @@ -59,6 +59,57 @@ func Test_3_00011_clean_on_inalid_cCache_invalid_iCache_inserted_edited_file(t *
assertEqualMTimes(t, fSys, sFname, cCache) // check for correct updated cCache
}

func Test_4_5_0010X_clean_on_invalid_cCache_valid_iCache_cleaned_file(t *testing.T) {
defer setupCacheTest(t)()
assertFileCreate(t, fSys, sFname, `trice(iD999), "msg:value=%d\n", -1);`) // create inserted file
sT0 := mTime(t, fSys, sFname) // keep mtime
id.CopyFileWithMTime(fSys, iCache, sFname) // create valid iCache
assertFileCreate(t, fSys, sFname, `trice("msg:value=%d\n", -2);`) // edit cleaned file
sT1 := mTime(t, fSys, sFname) // keep mtime

assert.Nil(t, args.Handler(io.Writer(&b), fSys, []string{"trice", "clean", "-cache", "-til", id.FnJSON, "-li", id.LIFnJSON, "-src", sFname}))

assertFileContent(t, fSys, sFname, `trice("msg:value=%d\n", -2);`) // check for not modified src file
assert.Equal(t, sT1, mTime(t, fSys, sFname)) // check for untouched sFname
assertEqualMTimes(t, fSys, sFname, cCache) // check for correct cCache
assert.Equal(t, sT0, mTime(t, fSys, iCache)) // check for correct iCache
}

func Test_6_00110_clean_on_invalid_cCache_valid_iCache_inserted_not_edited_file(t *testing.T) {
defer setupCacheTest(t)()
assertFileCreate(t, fSys, sFname, `trice(iD(999), "msg:value=%d\n", -1);`) // create inserted file
sT0 := mTime(t, fSys, sFname) // keep mtime
id.CopyFileWithMTime(fSys, iCache, sFname) // create valid iCache

time.Sleep(100 * time.Millisecond)
assert.Nil(t, args.Handler(io.Writer(&b), fSys, []string{"trice", "clean", "-cache", "-til", id.FnJSON, "-li", id.LIFnJSON, "-src", sFname}))
time.Sleep(100 * time.Millisecond)

assertFileContent(t, fSys, sFname, `trice("msg:value=%d\n", -1);`) // check src file
assert.NotEqual(t, sT0, mTime(t, fSys, sFname)) // check for touched sFname
assertEqualMTimes(t, fSys, sFname, cCache) // check for correct cCache
assert.Equal(t, sT0, mTime(t, fSys, iCache)) // check for correct iCache
}

func Test_7_00111_clean_on_invalid_cCache_valid_iCache_inserted_edited_file(t *testing.T) {
defer setupCacheTest(t)()
assertFileCreate(t, fSys, sFname, `trice(iD(999), "msg:value=%d\n", -1);`) // create inserted file
sT0 := mTime(t, fSys, sFname) // keep mtime
id.CopyFileWithMTime(fSys, iCache, sFname) // create valid iCache

assertFileCreate(t, fSys, sFname, `trice(iD(999),"msg:value=%d\n", -2);`) // "edit" src file
sT1 := mTime(t, fSys, sFname) // keep mtime

time.Sleep(100 * time.Millisecond)
assert.Nil(t, args.Handler(io.Writer(&b), fSys, []string{"trice", "clean", "-cache", "-til", id.FnJSON, "-li", id.LIFnJSON, "-src", sFname}))
time.Sleep(100 * time.Millisecond)

assertFileContent(t, fSys, sFname, `trice("msg:value=%d\n", -2);`) // check src file
assert.NotEqual(t, sT1, mTime(t, fSys, sFname)) // check for touched sFname
assertEqualMTimes(t, fSys, sFname, cCache) // check for correct cCache
assert.Equal(t, sT0, mTime(t, fSys, iCache)) // check for correct iCache
}

func Test_8_01000_clean_on_valid_cCache_invalid_iCache_cleaned_not_edited_file(t *testing.T) {
defer setupCacheTest(t)()
assertFileCreate(t, fSys, sFname, `trice("msg:value=%d\n", -1);`) // create src file
Expand All @@ -79,7 +130,9 @@ func Test_9_01001_clean_on_valid_cCache_invalid_iCache_cleaned_edited_file(t *te
id.CopyFileWithMTime(fSys, cCache, sFname) // create valid cCache

assertFileCreate(t, fSys, sFname, `trice("msg:value=%d\n", -2);`) // "edit" src file
sT1 := mTime(t, fSys, sFname) // keep mtime
time.Sleep(100 * time.Millisecond)

sT1 := mTime(t, fSys, sFname) // keep mtime
assert.Nil(t, args.Handler(io.Writer(&b), fSys, []string{"trice", "clean", "-cache", "-til", id.FnJSON, "-li", id.LIFnJSON, "-src", sFname}))

assertFileContent(t, fSys, sFname, `trice("msg:value=%d\n", -2);`) // check for not modified src file
Expand All @@ -88,33 +141,43 @@ func Test_9_01001_clean_on_valid_cCache_invalid_iCache_cleaned_edited_file(t *te
assertFileNotExists(t, fSys, iCache) // check for not existing iCache
}

func Test_9_01001_clean_on_valid_cCache_invalid_iCache_cleaned_edited_file____TestCleanOnCleanedFileWithValidCCache(t *testing.T) {
func Test_10_01011_clean_on_valid_cCache_invalid_iCache_inserted_not_edited_file(t *testing.T) {
defer setupCacheTest(t)()
assertFileCreate(t, fSys, sFname, `trice("msg:value=%d\n", -1);`) // create src file
sFNameMTime := mTime(t, fSys, sFname) // keep mtime
sT0 := mTime(t, fSys, sFname) // keep mtime
id.CopyFileWithMTime(fSys, cCache, sFname) // create valid cCache
time.Sleep(100 * time.Millisecond)

// status: invalid iCache && invalid cCache here && file edited
assert.Nil(t, args.Handler(io.Writer(&b), fSys, []string{"trice", "clean", "-cache", "-til", id.FnJSON, "-li", id.LIFnJSON, "-src", sFname})) // trice clean first time
assert.Nil(t, args.Handler(io.Writer(&b), fSys, []string{"trice", "clean", "-cache", "-til", id.FnJSON, "-li", id.LIFnJSON, "-src", sFname}))
time.Sleep(100 * time.Millisecond)

// status: invalid iCache && valid cCache here && file NOT edited
assert.Nil(t, args.Handler(io.Writer(&b), fSys, []string{"trice", "clean", "-cache", "-til", id.FnJSON, "-li", id.LIFnJSON, "-src", sFname})) // trice clean second time
assertFileContent(t, fSys, sFname, `trice("msg:value=%d\n", -1);`) // check for unchanged src file
assert.Equal(t, sT0, mTime(t, fSys, sFname)) // check for untouched sFname
assertEqualMTimes(t, fSys, sFname, cCache) // check for untouched cCache
assertFileContent(t, fSys, cCache, `trice("msg:value=%d\n", -1);`) // check for correct cCache
assertFileNotExists(t, fSys, iCache) // check for not existing iCache
}

assertFileContent(t, fSys, sFname, `trice("msg:value=%d\n", -1);`)
assert.Equal(t, sFNameMTime, mTime(t, fSys, sFname)) // check for untouched sFname
assertEqualMTimes(t, fSys, sFname, cCache) // check for correct updated cCache
assertFileNotExists(t, fSys, iCache) // check for not existing iCache
func Test_11_01011_clean_on_valid_cCache_invalid_iCache_inserted_edited_file(t *testing.T) {
defer setupCacheTest(t)()
assertFileCreate(t, fSys, sFname, `trice("msg:value=%d\n", -1);`) // create src file
id.CopyFileWithMTime(fSys, cCache, sFname) // create valid cCache
time.Sleep(100 * time.Millisecond)

assertFileCreate(t, fSys, sFname, `trice("msg:value=%d\n", -2);`) // "edit" src file
sFNameMTime = mTime(t, fSys, sFname) // keep mtime
assert.Nil(t, args.Handler(io.Writer(&b), fSys, []string{"trice", "clean", "-cache", "-til", id.FnJSON, "-li", id.LIFnJSON, "-src", sFname})) // trice clean again
assertFileCreate(t, fSys, sFname, `trice(iD(999), "msg:value=%d\n", -2);`) // inserted, edit file
time.Sleep(100 * time.Millisecond)
sT1 := mTime(t, fSys, sFname) // keep mtime
assert.Nil(t, args.Handler(io.Writer(&b), fSys, []string{"trice", "clean", "-cache", "-til", id.FnJSON, "-li", id.LIFnJSON, "-src", sFname}))
time.Sleep(100 * time.Millisecond)

assertFileContent(t, fSys, sFname, `trice("msg:value=%d\n", -2);`) // check for not modified src file
assert.Equal(t, sFNameMTime, mTime(t, fSys, sFname)) // check for untouched sFname
assertFileContent(t, fSys, sFname, `trice("msg:value=%d\n", -2);`) // check for cleaned src file
assert.NotEqual(t, sT1, mTime(t, fSys, sFname)) // check for touched sFname
assertEqualMTimes(t, fSys, sFname, cCache) // check for correct updated cCache
assertFileContent(t, fSys, cCache, `trice("msg:value=%d\n", -2);`) // check for correct cCache
assertFileNotExists(t, fSys, iCache) // check for not existing iCache
}

func TestClean_On_valid_iCache_valid_cCache_inserted_file_not_edited(t *testing.T) {
func Test_14_01110_clean_on_valid_iCache_valid_cCache_inserted_file_not_edited(t *testing.T) {
defer setupCacheTest(t)()

assertFileCreate(t, fSys, sFname, `trice("msg:value=%d\n", -1);`) // cleaned file
Expand All @@ -141,7 +204,7 @@ func TestClean_On_valid_iCache_valid_cCache_inserted_file_not_edited(t *testing.
assertEqualMTimes(t, fSys, cCache, sFname) // check for valid cCache
}

func TestClean_On_valid_iCache_valid_cCache_clean_file_not_edited(t *testing.T) {
func Test_12_01100_clean_on_valid_iCache_valid_cCache_clean_file_not_edited(t *testing.T) {
defer setupCacheTest(t)()

assertFileCreate(t, fSys, sFname, `trice(iD(999), "msg:value=%d\n", -1);`) // inserted file
Expand All @@ -167,7 +230,7 @@ func TestClean_On_valid_iCache_valid_cCache_clean_file_not_edited(t *testing.T)
assertEqualMTimes(t, fSys, cCache, sFname) // check for valid cCache
}

func TestClean_On_valid_iCache_valid_cCache_inserted_file_edited(t *testing.T) {
func Test_15_01111_clean_on_valid_iCache_valid_cCache_inserted_file_edited(t *testing.T) {
defer setupCacheTest(t)()

assertFileCreate(t, fSys, sFname, `trice("msg:value=%d\n", -1);`) // cleaned file
Expand Down Expand Up @@ -200,7 +263,7 @@ func TestClean_On_valid_iCache_valid_cCache_inserted_file_edited(t *testing.T) {
assertEqualMTimes(t, fSys, cCache, sFname) // check for valid cCache
}

func TestClean_On_valid_iCache_valid_cCache_clean_file_edited(t *testing.T) {
func Test_13_01101_clean_on_valid_iCache_valid_cCache_clean_file_edited(t *testing.T) {
defer setupCacheTest(t)()

assertFileCreate(t, fSys, sFname, `trice(iD(999), "msg:value=%d\n", -1);`) // inserted file
Expand Down
Loading

0 comments on commit 7abd9df

Please sign in to comment.