@@ -30,6 +30,13 @@ import org.eclipse.apoapsis.ortserver.dao.repositories.analyzerrun.PackagesTable
30
30
import org.eclipse.apoapsis.ortserver.dao.repositories.analyzerrun.ProcessedDeclaredLicensesTable
31
31
import org.eclipse.apoapsis.ortserver.dao.repositories.analyzerrun.ProjectsTable
32
32
import org.eclipse.apoapsis.ortserver.dao.repositories.analyzerrun.UnmappedDeclaredLicensesTable
33
+ import org.eclipse.apoapsis.ortserver.dao.tables.CopyrightFindingsTable
34
+ import org.eclipse.apoapsis.ortserver.dao.tables.LicenseFindingsTable
35
+ import org.eclipse.apoapsis.ortserver.dao.tables.ScanResultsTable
36
+ import org.eclipse.apoapsis.ortserver.dao.tables.ScanSummariesTable
37
+ import org.eclipse.apoapsis.ortserver.dao.tables.SnippetFindingsSnippetsTable
38
+ import org.eclipse.apoapsis.ortserver.dao.tables.SnippetFindingsTable
39
+ import org.eclipse.apoapsis.ortserver.dao.tables.SnippetsTable
33
40
import org.eclipse.apoapsis.ortserver.dao.tables.shared.DeclaredLicensesTable
34
41
import org.eclipse.apoapsis.ortserver.dao.tables.shared.IdentifiersTable
35
42
import org.eclipse.apoapsis.ortserver.dao.tables.shared.RemoteArtifactsTable
@@ -38,9 +45,11 @@ import org.eclipse.apoapsis.ortserver.dao.test.DatabaseTestExtension
38
45
import org.eclipse.apoapsis.ortserver.services.OrphanRemovalServiceTestFixtures.createAdvisorRunsIdentifiersTableEntry
39
46
import org.eclipse.apoapsis.ortserver.services.OrphanRemovalServiceTestFixtures.createAnalyzerRunTableEntry
40
47
import org.eclipse.apoapsis.ortserver.services.OrphanRemovalServiceTestFixtures.createAuthorsTableEntry
48
+ import org.eclipse.apoapsis.ortserver.services.OrphanRemovalServiceTestFixtures.createCopyrightFindingsTableEntry
41
49
import org.eclipse.apoapsis.ortserver.services.OrphanRemovalServiceTestFixtures.createDeclaredLicensesTableEntry
42
50
import org.eclipse.apoapsis.ortserver.services.OrphanRemovalServiceTestFixtures.createIdentifierTableEntry
43
51
import org.eclipse.apoapsis.ortserver.services.OrphanRemovalServiceTestFixtures.createIdentifiersIssuesTableEntry
52
+ import org.eclipse.apoapsis.ortserver.services.OrphanRemovalServiceTestFixtures.createLicenseFindingsTableEntry
44
53
import org.eclipse.apoapsis.ortserver.services.OrphanRemovalServiceTestFixtures.createMappedDeclaredLicenseTableEntry
45
54
import org.eclipse.apoapsis.ortserver.services.OrphanRemovalServiceTestFixtures.createNestedRepositoriesTableEntry
46
55
import org.eclipse.apoapsis.ortserver.services.OrphanRemovalServiceTestFixtures.createOrtRunTableEntry
@@ -65,7 +74,12 @@ import org.eclipse.apoapsis.ortserver.services.OrphanRemovalServiceTestFixtures.
65
74
import org.eclipse.apoapsis.ortserver.services.OrphanRemovalServiceTestFixtures.createProjectsTableEntry
66
75
import org.eclipse.apoapsis.ortserver.services.OrphanRemovalServiceTestFixtures.createRemoteArtifactsTableEntry
67
76
import org.eclipse.apoapsis.ortserver.services.OrphanRemovalServiceTestFixtures.createRuleViolationsTableEntry
77
+ import org.eclipse.apoapsis.ortserver.services.OrphanRemovalServiceTestFixtures.createScanResultsTableEntry
78
+ import org.eclipse.apoapsis.ortserver.services.OrphanRemovalServiceTestFixtures.createScanSummaryTableEntry
79
+ import org.eclipse.apoapsis.ortserver.services.OrphanRemovalServiceTestFixtures.createScannerRunsScanResultsTableEntry
68
80
import org.eclipse.apoapsis.ortserver.services.OrphanRemovalServiceTestFixtures.createScannerRunsScannersTableEntry
81
+ import org.eclipse.apoapsis.ortserver.services.OrphanRemovalServiceTestFixtures.createSnippetFindingsSnippetsTableEntry
82
+ import org.eclipse.apoapsis.ortserver.services.OrphanRemovalServiceTestFixtures.createSnippetFindingsTableEntry
69
83
import org.eclipse.apoapsis.ortserver.services.OrphanRemovalServiceTestFixtures.createSnippetsTableEntry
70
84
import org.eclipse.apoapsis.ortserver.services.OrphanRemovalServiceTestFixtures.createUnmappedDeclaredLicenseTableEntry
71
85
import org.eclipse.apoapsis.ortserver.services.OrphanRemovalServiceTestFixtures.createVcsInfoTableEntry
@@ -484,6 +498,105 @@ class OrphanRemovalServiceTest : WordSpec() {
484
498
}
485
499
}
486
500
}
501
+
502
+ " delete findings, snippets and scan summaries not related to any other entity" {
503
+ db.dbQuery {
504
+
505
+ // Create scan result not related to scan run.
506
+ val scanSummaryId = createScanSummaryTableEntry(hash = " to.delete.1" ).value
507
+ createScanResultsTableEntry(artifactUrl = " to.delete.1" , scanSummaryId = scanSummaryId)
508
+ createCopyrightFindingsTableEntry(scanSummaryId = scanSummaryId, path = " to.delete.2" )
509
+ createCopyrightFindingsTableEntry(scanSummaryId = scanSummaryId, path = " to.delete.3" )
510
+ createLicenseFindingsTableEntry(scanSummaryId = scanSummaryId, path = " to.delete.4" )
511
+ createLicenseFindingsTableEntry(scanSummaryId = scanSummaryId, path = " to.delete.5" )
512
+
513
+ createSnippetFindingsSnippetsTableEntry(
514
+ snippetFindingId = createSnippetFindingsTableEntry(
515
+ scanSummaryId = scanSummaryId,
516
+ path = " to.delete.6"
517
+ ).value,
518
+ snippetId = createSnippetsTableEntry(purl = " to.delete.7" ).value
519
+ )
520
+
521
+ createSnippetFindingsSnippetsTableEntry(
522
+ snippetFindingId = createSnippetFindingsTableEntry(
523
+ scanSummaryId = scanSummaryId,
524
+ path = " to.delete.8"
525
+ ).value,
526
+ snippetId = createSnippetsTableEntry(purl = " to.delete.9" ).value
527
+ )
528
+
529
+ // Create scan result related to scan run.
530
+ val scanSummary2Id = createScanSummaryTableEntry(hash = " not.to.delete.1" ).value
531
+ createCopyrightFindingsTableEntry(scanSummaryId = scanSummary2Id, path = " not.to.delete.2" )
532
+ createCopyrightFindingsTableEntry(scanSummaryId = scanSummary2Id, path = " not.to.delete.3" )
533
+ createLicenseFindingsTableEntry(scanSummaryId = scanSummary2Id, path = " not.to.delete.4" )
534
+ createLicenseFindingsTableEntry(scanSummaryId = scanSummary2Id, path = " not.to.delete.5" )
535
+
536
+ createSnippetFindingsSnippetsTableEntry(
537
+ snippetFindingId = createSnippetFindingsTableEntry(
538
+ scanSummaryId = scanSummary2Id,
539
+ path = " not.to.delete.6"
540
+ ).value,
541
+ snippetId = createSnippetsTableEntry(purl = " not.to.delete.7" ).value
542
+ )
543
+
544
+ createSnippetFindingsSnippetsTableEntry(
545
+ snippetFindingId = createSnippetFindingsTableEntry(
546
+ scanSummaryId = scanSummary2Id,
547
+ path = " not.to.delete.8"
548
+ ).value,
549
+ snippetId = createSnippetsTableEntry(purl = " not.to.delete.9" ).value
550
+ )
551
+
552
+ createScannerRunsScanResultsTableEntry(
553
+ scannerRunId = createScannerRunsScannersTableEntry().value,
554
+ scanResultId = createScanResultsTableEntry(
555
+ artifactUrl = " not.to.delete.8" , scanSummaryId = scanSummary2Id
556
+ ).value
557
+ )
558
+ }
559
+
560
+ db.dbQuery {
561
+ ScanSummariesTable .selectAll().count() shouldBe 2
562
+ ScanResultsTable .selectAll().count() shouldBe 2
563
+ SnippetFindingsTable .selectAll().count() shouldBe 4
564
+ LicenseFindingsTable .selectAll().count() shouldBe 4
565
+ CopyrightFindingsTable .selectAll().count() shouldBe 4
566
+ SnippetsTable .selectAll().count() shouldBe 4
567
+ }
568
+
569
+ service.deleteRunsOrphanedEntities()
570
+
571
+ db.dbQuery {
572
+ ScanSummariesTable .selectAll().count() shouldBe 1
573
+ ScanSummariesTable .selectAll().forEach {
574
+ it[ScanSummariesTable .hash] shouldStartWith " not.to.delete"
575
+ }
576
+ ScanResultsTable .selectAll().count() shouldBe 1
577
+ ScanResultsTable .selectAll().forEach {
578
+ it[ScanResultsTable .artifactUrl] shouldStartWith " not.to.delete"
579
+ }
580
+ SnippetFindingsSnippetsTable .selectAll().count() shouldBe 2
581
+
582
+ SnippetFindingsTable .selectAll().count() shouldBe 2
583
+ SnippetFindingsTable .selectAll().forEach {
584
+ it[SnippetFindingsTable .path] shouldStartWith " not.to.delete"
585
+ }
586
+ LicenseFindingsTable .selectAll().count() shouldBe 2
587
+ LicenseFindingsTable .selectAll().forEach {
588
+ it[LicenseFindingsTable .path] shouldStartWith " not.to.delete"
589
+ }
590
+ CopyrightFindingsTable .selectAll().count() shouldBe 2
591
+ CopyrightFindingsTable .selectAll().forEach {
592
+ it[CopyrightFindingsTable .path] shouldStartWith " not.to.delete"
593
+ }
594
+ SnippetsTable .selectAll().count() shouldBe 2
595
+ SnippetsTable .selectAll().forEach {
596
+ it[SnippetsTable .purl] shouldStartWith " not.to.delete"
597
+ }
598
+ }
599
+ }
487
600
}
488
601
}
489
602
}
0 commit comments