MCPcopy Create free account
hub / github.com/activecm/rita / CheckImportFileTracking

Function CheckImportFileTracking

integration/metadb_test.go:25–86  ·  view source on GitHub ↗
(t *testing.T, importer *i.Importer)

Source from the content-addressed store, hash-verified

23)
24
25func CheckImportFileTracking(t *testing.T, importer *i.Importer) { // uses valid dataset
26 t.Helper()
27 var result struct {
28 Count uint64 `ch:"count"`
29 }
30
31 // set context with importID and database parameters
32 ctx := clickhouse.Context(importer.Database.GetContext(), clickhouse.WithParameters(clickhouse.Parameters{
33 "importID": importer.ImportID.Hex(),
34 "database": importer.Database.GetSelectedDB(),
35 }))
36
37 // make sure total (post duplicate filtering) file count to be imported matches file count in metadb
38 err := importer.Database.Conn.QueryRow(ctx, `
39 SELECT count() AS count FROM metadatabase.files
40 WHERE import_id = unhex({importID:String}) AND database = {database:String}
41 `).ScanStruct(&result)
42 require.NoError(t, err)
43 require.EqualValues(t, importer.TotalFileCount, result.Count, "total file count matches imported file count")
44
45 var allFiles []string
46 allFiles = append(allFiles, importer.FileMap[c.ConnPrefix]...)
47 allFiles = append(allFiles, importer.FileMap[c.OpenConnPrefix]...)
48 allFiles = append(allFiles, importer.FileMap[c.HTTPPrefix]...)
49 allFiles = append(allFiles, importer.FileMap[c.OpenHTTPPrefix]...)
50 allFiles = append(allFiles, importer.FileMap[c.SSLPrefix]...)
51 allFiles = append(allFiles, importer.FileMap[c.OpenSSLPrefix]...)
52 allFiles = append(allFiles, importer.FileMap[c.DNSPrefix]...)
53
54 var filesResult struct {
55 Files []string `ch:"files"`
56 }
57
58 // set context with importID parameter
59 ctx = clickhouse.Context(importer.Database.GetContext(), clickhouse.WithParameters(clickhouse.Parameters{
60 "importID": importer.ImportID.Hex(),
61 }))
62
63 // make sure all files in created filemap were imported and saved in metadb
64 err = importer.Database.Conn.QueryRow(ctx, `
65 SELECT groupArray(path) as files FROM metadatabase.files
66 WHERE import_id = unhex({importID:String})
67 `).ScanStruct(&filesResult)
68 require.NoError(t, err)
69 require.ElementsMatch(t, allFiles, filesResult.Files, "files in filemap created for import match list of imported files in metadb")
70
71 // Make sure duplicate files in same import don't get imported (conn.log & conn.log.gz)
72 for _, file := range allFiles {
73 if strings.HasSuffix(file, ".gz") {
74 hasUncompressedDuplicate := slices.Contains(allFiles, strings.TrimSuffix(file, ".gz"))
75 require.False(t, hasUncompressedDuplicate, "ucompressed duplicate of .gz file was not imported")
76 } else {
77 hasCompressedDuplicate := slices.Contains(allFiles, (file + ".gz"))
78 require.False(t, hasCompressedDuplicate, "compressed duplicate of uncompressed file was not imported")
79 }
80 }
81
82 // importing again should fail because all files are imported

Callers

nothing calls this directly

Calls 4

HexMethod · 0.80
GetSelectedDBMethod · 0.80
ImportMethod · 0.80
GetContextMethod · 0.65

Tested by

no test coverage detected