Service Exhaustive and Scaffolding
Tests of the services behind Exhaustive training pages: search instances, datasets, charts and model scaffolding.
Exhaustive charts
ExhaustiveCalibrationChartServiceTests
Jube.Test.Service.ExhaustiveCharts.ExhaustiveCalibrationChartServiceTests — 10 tests. Category: Service. Collection:
Database.
| Test | Kind | Verifies |
|---|---|---|
ACalibratedModel_DrawsTheRawAndTheCalibratedCurvesWithTheStatisticsInTheCaptionAsync |
Fact | A calibrated model draws the raw and the calibrated curves with the statistics in the caption. |
AHistoricalModel_DrawsOnlyTheRawCurveAndSaysItIsNotCalibratedAsync |
Fact | A historical model draws only the raw curve and says it is not calibrated. |
ASkippedCalibration_ShowsTheRecordedReasonAsync |
Fact | A skipped calibration shows the recorded reason. |
AnInvalidStoredCalibrator_IsReportedAndNotDrawnAsCalibratedAsync |
Fact | An invalid stored calibrator is reported and not drawn as calibrated. |
PermissionTenantAndUnknownIdBehaviourIsUnchangedAsync |
Fact | Permission tenant and unknown id behaviour is unchanged. |
ThePredictedActualChart_ShowsCalibratedProbabilitiesForACalibratedModelAndLabelsThemAsync |
Fact | The predicted actual chart shows calibrated probabilities for a calibrated model and labels them. |
TheResultsPageMeasuresPanel_ForACalibratedModel_ShowsTheCalibrationStatisticsAndCaptionAsync |
Fact | The results page measures panel for a calibrated model shows the calibration statistics and caption. |
TheResultsPageCalibrationChart_ForACalibratedModel_DrawsBothCurvesAndForAHistoricalModelSaysSoAsync |
Fact | The results page calibration chart for a calibrated model draws both curves and for a historical model says so. |
TheResultsPageCharts_RenderForBothKindsOfModelAndStayIsolatedByTenantAsync |
Fact | The results page charts render for both kinds of model and stay isolated by tenant. |
TheRenderer_CalibratesRowsAtTheSamplePriorAndLeavesUncalibratedRowsAlone |
Fact | The renderer calibrates rows at the sample prior and leaves uncalibrated rows alone. |
ExhaustiveChartRendererTests
Jube.Test.Service.ExhaustiveCharts.ExhaustiveChartRendererTests — 12 tests. Category: Service.
| Test | Kind | Verifies |
|---|---|---|
EveryChartUsesTheExternalStyleModeByDefault |
Fact | Every chart uses the external style mode by default. |
InlineModeStillGivesASelfContainedSvg |
Fact | Inline mode still gives a self contained svg. |
TheExternalOutputIsMuchSmallerThanTheInlineOutput |
Fact | The external output is much smaller than the inline output. |
AChartIdKeepsTheTitleAndDescriptionIdsUniquePerChart |
Fact | A chart id keeps the title and description ids unique per chart. |
EmptyInputsGiveAnEmptyStateNeverAnException |
Fact | Empty inputs give an empty state never an exception. |
RocIsSortedAndAnchoredAndCarriesTheAxisTitles |
Fact | Roc is sorted and anchored and carries the axis titles. |
PredictedActualSplitsByActualAndDropsAnEmptyClass |
Fact | Predicted actual splits by actual and drops an empty class. |
PredictedActualThinsVeryLargeInputsAndStaysWellFormed |
Fact | Predicted actual thins very large inputs and stays well formed. |
LearningCurveWithOnePointStillRenders |
Fact | Learning curve with one point still renders. |
ErrorAndVariableHistogramsUseTheirBinsAsCategories |
Fact | Error and variable histograms use their bins as categories. |
SensitivityKeepsOnlyTheTopBarsAndHostileNamesAreEscaped |
Fact | Sensitivity keeps only the top bars and hostile names are escaped. |
OutputIsDeterministic |
Fact | Output is deterministic. |
ExhaustiveChartServiceTests
Jube.Test.Service.ExhaustiveCharts.ExhaustiveChartServiceTests — 9 tests. Category: Service. Collection: Database.
| Test | Kind | Verifies |
|---|---|---|
EveryChartServiceRefusesAnUnauthenticatedCallerAsync |
Fact | Every chart service refuses an unauthenticated caller. |
EveryChartServiceDeniesACallerWithoutThePermissionAsync |
Fact | Every chart service denies a caller without the permission. |
UnknownIdsReturnAnEmptyStateChartForEveryChartAsync |
Fact | Unknown ids return an empty state chart for every chart. |
RocChartMapsThePointsAndIsIndistinguishableForAnotherTenantAsync |
Fact | Roc chart maps the points and is indistinguishable for another tenant. |
LearningCurveMapsOnePointPerPromotionAndIsIsolatedByTenantAsync |
Fact | Learning curve maps one point per promotion and is isolated by tenant. |
PredictedActualHasPositiveAndNegativeSeriesAndIsIsolatedByTenantAsync |
Fact | Predicted actual has positive and negative series and is isolated by tenant. |
ErrorHistogramRendersBinsAndIsIsolatedByTenantAsync |
Fact | Error histogram renders bins and is isolated by tenant. |
VariableHistogramRendersTheRequestedVariableOnlyAsync |
Fact | Variable histogram renders the requested variable only. |
ConfusionChartUsesTheStoredCountsAndIsIsolatedByTenantAsync |
Fact | Confusion chart uses the stored counts and is isolated by tenant. |
ExhaustiveNarrativeServiceTests
Jube.Test.Service.ExhaustiveCharts.ExhaustiveNarrativeServiceTests — 2 tests. Category: Service. Collection: Database.
| Test | Kind | Verifies |
|---|---|---|
GetAsync_ProducesEveryGroupForARealisticPromotedTrialAsync |
Fact | Get async produces every group for a realistic promoted trial. |
GetAsync_OmitsGroupsThatHaveNoDataInsteadOfGuessingAsync |
Fact | Get async omits groups that have no data instead of guessing. |
ExhaustiveNarrativeTests
Jube.Test.Service.ExhaustiveCharts.ExhaustiveNarrativeTests — 34 tests. Category: Service.
| Test | Kind | Verifies |
|---|---|---|
DiscriminationBand_MapsAucToTheHosmerLemeshowConvention |
Theory | Discrimination band maps auc to the hosmer lemeshow convention. |
Performance_MentionsTheAucAndItsBandForARealSample |
Fact | Performance mentions the auc and its band for a real sample. |
Performance_FlagsLowPrevalenceAsItsOwnParagraph |
Fact | Performance flags low prevalence as its own paragraph. |
Performance_IsEmptyWhenThereIsNoPerformanceData |
Fact | Performance is empty when there is no performance data. |
Calibration_DescribesScoresAsProbabilitiesOnlyWhenCalibrated |
Fact | Calibration describes scores as probabilities only when calibrated. |
Sensitivity_NamesTheDominantVariableWhenOneStandsOut |
Fact | Sensitivity names the dominant variable when one stands out. |
Sensitivity_SaysNoVariableDominatesWhenTwoAreSimilar |
Fact | Sensitivity says no variable dominates when two are similar. |
Sensitivity_IsEmptyWhenThereAreNoVariables |
Fact | Sensitivity is empty when there are no variables. |
Prescription_CallsOutAStrongDiscriminatorWhenTheClassRangesBarelyOverlap |
Fact | Prescription calls out a strong discriminator when the class ranges barely overlap. |
Prescription_OneParagraphPerVariable |
Fact | Prescription one paragraph per variable. |
Prescription_CallsOutAWeakDiscriminatorWhenTheClassRangesOverlapSubstantially |
Fact | Prescription calls out a weak discriminator when the class ranges overlap substantially. |
Prescription_IsEmptyWhenNeitherClassHasPrescriptionData |
Fact | Prescription is empty when neither class has prescription data. |
Confusion_ExplainsTheMatrixInPlainTerms |
Fact | Confusion explains the matrix in plain terms. |
Confusion_IsEmptyWhenThereIsNoPerformanceData |
Fact | Confusion is empty when there is no performance data. |
Discrimination_MentionsAucAndAveragePrecision |
Fact | Discrimination mentions auc and average precision. |
Ks_MentionsTheStatisticAndItsScore |
Fact | Ks mentions the statistic and its score. |
ThresholdSweep_MentionsTheCurrentThresholdTradeOff |
Fact | Threshold sweep mentions the current threshold trade off. |
ScoreDistribution_DescribesSeparationBetweenClasses |
Fact | Score distribution describes separation between classes. |
ScoreDistribution_IsEmptyWithTooFewRowsPerClass |
Fact | Score distribution is empty with too few rows per class. |
Gains_DescribesTopDecileCaptureAndLift |
Fact | Gains describes top decile capture and lift. |
Gains_IsEmptyWithFewerThanTenRows |
Fact | Gains is empty with fewer than ten rows. |
Holistic_JoinsWhicheverPartsAreAvailable |
Fact | Holistic joins whichever parts are available. |
Holistic_FallsBackToASayNothingMessageWhenThereIsNoDataAtAll |
Fact | Holistic falls back to a say nothing message when there is no data at all. |
Build_GroupsPrescriptionRowsByVariableAcrossBothClasses |
Fact | Build groups prescription rows by variable across both classes. |
Build_OrdersVariablesBySensitivityDescending |
Fact | Build orders variables by sensitivity descending. |
PrecisionRecall_SaysWhichMeasureDominates |
Fact | Precision recall says which measure dominates. |
PrecisionRecall_IsEmptyWhenThereIsNoPerformanceData |
Fact | Precision recall is empty when there is no performance data. |
Lift_DescribesHowManyDecilesStayAboveRandom |
Fact | Lift describes how many deciles stay above random. |
Lift_IsEmptyWithFewerThanTenRows |
Fact | Lift is empty with fewer than ten rows. |
Lift_SaysEveryDecileStaysAboveRandomWhenTheModelDiscriminatesThroughout |
Fact | Lift says every decile stays above random when the model discriminates throughout. |
LearningCurve_DescribesPromotionsAndTrialsExplored |
Fact | Learning curve describes promotions and trials explored. |
LearningCurve_FlagsWhetherTheMostRecentPromotionsAreStillImproving |
Fact | Learning curve flags whether the most recent promotions are still improving. |
LearningCurve_IsEmptyWithNoPromotionHistory |
Fact | Learning curve is empty with no promotion history. |
LearningCurve_SaysNothingAboutTrendWithFewerThanThreePromotions |
Fact | Learning curve says nothing about trend with fewer than three promotions. |
ExhaustivePageChartWiringTests
Jube.Test.Service.ExhaustiveCharts.ExhaustivePageChartWiringTests — 10 tests. Category: Service.
| Test | Kind | Verifies |
|---|---|---|
ExhaustivePageAndScriptsDoNotReferenceKendoChart |
Theory | Exhaustive page and scripts do not reference kendo chart. |
ExhaustivePageLoadsTheChartScriptAndScriptUsesEveryChartEndpoint |
Fact | Exhaustive page loads the chart script and script uses every chart endpoint. |
PageNoLongerDrawsPredictedVersusActualTheErrorHistogramOrTheHtmlConfusionTable |
Fact | Page no longer draws predicted versus actual the error histogram or the html confusion table. |
EveryPerformanceContainerInThePageIsFilledByTheScriptOnce |
Fact | Every performance container in the page is filled by the script once. |
EveryChartHasAMatchingNarrativeDivAndGroup |
Fact | Every chart has a matching narrative div and group. |
PerformanceEndpointsAreGatedLikeTheOtherChartEndpointsAndAnswerSvgWithTheSameHeaders |
Fact | Performance endpoints are gated like the other chart endpoints and answer svg with the same headers. |
ChartScriptCarriesNoInlineStyleSoAStrictStyleSrcWorks |
Fact | Chart script carries no inline style so a strict style src works. |
TheSharedLayoutCarriesTheChartStylesheetSoInjectedMarkupIsStyledByTheSelfPolicy |
Fact | The shared layout carries the chart stylesheet so injected markup is styled by the self policy. |
ChartEndpointsNoLongerNeedInlineStylesInTheirContentSecurityPolicy |
Fact | Chart endpoints no longer need inline styles in their content security policy. |
ChartScriptInjectsMarkupAndCarriesNoScriptExecution |
Fact | Chart script injects markup and carries no script execution. |
ExhaustivePerformanceChartServiceTests
Jube.Test.Service.ExhaustiveCharts.ExhaustivePerformanceChartServiceTests — 9 tests. Category: Service. Collection:
Database.
| Test | Kind | Verifies |
|---|---|---|
PerformanceAndHistoryServicesRefuseAnUnauthenticatedCallerAsync |
Fact | Performance and history services refuse an unauthenticated caller. |
EveryPerformanceChartAndTheHistoryDenyACallerWithoutThePermissionAsync |
Fact | Every performance chart and the history deny a caller without the permission. |
UnknownIdsGiveTheEmptyStateForEveryPerformanceChartAndTheHistoryAsync |
Fact | Unknown ids give the empty state for every performance chart and the history. |
ForeignTenantAndUnknownIdsAreIndistinguishableForEveryChartAsync |
Fact | Foreign tenant and unknown ids are indistinguishable for every chart. |
PromotionHistoryChartMapsEveryPromotionAndIsIsolatedByTenantAsync |
Fact | Promotion history chart maps every promotion and is isolated by tenant. |
MeasuresPanelMatchesThePythonReferenceThroughTheDatabaseAsync |
Fact | Measures panel matches the python reference through the database. |
ThresholdAndCostsAreHonouredAndBadValuesFallBackToTheDefaultAsync |
Fact | Threshold and costs are honoured and bad values fall back to the default. |
EveryChartForARealSeededModelIsSafeSvgWithUniqueDistinctIdsAsync |
Fact | Every chart for a real seeded model is safe svg with unique distinct ids. |
OnlyTheMostRecentPromotedTrialRowsAreChartedAsync |
Fact | Only the most recent promoted trial rows are charted. |
ExhaustivePerformanceRendererTests
Jube.Test.Service.ExhaustiveCharts.ExhaustivePerformanceRendererTests — 24 tests. Category: Service.
| Test | Kind | Verifies |
|---|---|---|
MeasuresMatchThePythonReference |
Fact | Measures match the python reference. |
MeasuresAtADifferentThresholdChangeOnlyTheThresholdMeasures |
Fact | Measures at a different threshold change only the threshold measures. |
MeasuresAreNullForEmptyOrSingleClassData |
Fact | Measures are null for empty or single class data. |
ProbabilityMeasuresAreNotAvailableWhenScoresLeaveTheUnitInterval |
Fact | Probability measures are not available when scores leave the unit interval. |
NonFiniteRowsAreDroppedBeforeAnyMeasure |
Fact | Non finite rows are dropped before any measure. |
ActualIsTreatedAsPositiveClassFromOneHalfUp |
Fact | Actual is treated as positive class from one half up. |
MeasuresPanelCarriesEveryMeasureWithItsValueAndInterval |
Fact | Measures panel carries every measure with its value and interval. |
EveryPerformanceChartRendersSafeExternalSvgWithTheExpectedTitles |
Fact | Every performance chart renders safe external svg with the expected titles. |
ScoreDistributionShowsPositiveAndNegativeAsSeparateSeriesWithTheThreshold |
Fact | Score distribution shows positive and negative as separate series with the threshold. |
ConfusionChartShowsTheCountsAtTheThreshold |
Fact | Confusion chart shows the counts at the threshold. |
ThresholdSweepMarksTheMinimumRiskThresholdOnlyWhenBothCostsAreSupplied |
Fact | Threshold sweep marks the minimum risk threshold only when both costs are supplied. |
MinimumRiskThresholdIsTheBayesPointOrNullForUnusableCosts |
Fact | Minimum risk threshold is the bayes point or null for unusable costs. |
SafeThresholdFallsBackToTheDefault |
Theory | Safe threshold falls back to the default. |
EveryChartAnswersTheEmptyStateForNoRowsAndForASingleClass |
Fact | Every chart answers the empty state for no rows and for a single class. |
CalibrationIsEmptyWhenScoresAreNotProbabilities |
Fact | Calibration is empty when scores are not probabilities. |
PerformanceChartIdsAreUniquePerChart |
Fact | Performance chart ids are unique per chart. |
OutputIsDeterministic |
Fact | Output is deterministic. |
InlineModeIsStillAvailable |
Fact | Inline mode is still available. |
LargeRowSetsStayWithinTheLimits |
Fact | Large row sets stay within the limits. |
HostileTextInRowsCannotExistButHostileHistoryNamesAreNotRenderedAtAll |
Fact | Hostile text in rows cannot exist but hostile history names are not rendered at all. |
PromotionHistoryPlotsScoreBestSoFarAndComplexityAgainstTime |
Fact | Promotion history plots score best so far and complexity against time. |
PromotionHistoryBestSoFarNeverDecreasesAndComplexityUsesTheSecondaryAxis |
Fact | Promotion history best so far never decreases and complexity uses the secondary axis. |
PromotionHistoryWithASinglePromotionAndWithNoneStillRender |
Fact | Promotion history with a single promotion and with none still render. |
TheFormatOfTimestampsDoesNotDependOnTheCurrentCulture |
Fact | The format of timestamps does not depend on the current culture. |
ExhaustiveStatisticsChartRendererTests
Jube.Test.Service.ExhaustiveCharts.ExhaustiveStatisticsChartRendererTests — 24 tests. Category: Service.
| Test | Kind | Verifies |
|---|---|---|
AlignedClassesAreTwoSeriesNegativeFirstThenPositiveInTheirFixedColourSlots |
Fact | Aligned classes are two series negative first then positive in their fixed colour slots. |
AlignedClassesAreShownAsShareOfClassByDefaultAndAsCountsOnRequest |
Fact | Aligned classes are shown as share of class by default and as counts on request. |
EachClassIsNormalisedByItsOwnTotalSoTheImbalanceDoesNotHideThePositiveClass |
Fact | Each class is normalised by its own total so the imbalance does not hide the positive class. |
ClassesAreAnEmptyStateWithoutDataWhateverTheVariableName |
Fact | Classes are an empty state without data whatever the variable name. |
OlderInstancesShowAllRowsAndThePositiveClassAsDensitiesWithAClearCaption |
Fact | Older instances show all rows and the positive class as densities with a clear caption. |
OlderInstanceDensitiesHaveUnitAreaOnASharedNumericAxis |
Fact | Older instance densities have unit area on a shared numeric axis. |
OlderInstanceWithAnAnomalyFallsBackToTheAnomalyRowsAsThePositiveClass |
Fact | Older instance with an anomaly falls back to the anomaly rows as the positive class. |
OlderInstanceWithoutAnyPositiveClassSaysSoAndKeepsTheAllRowsSeries |
Fact | Older instance without any positive class says so and keeps the all rows series. |
LargeViewIsBiggerThanTheGridCell |
Fact | Large view is bigger than the grid cell. |
MonteCarloOverlaysTheModelProfileOnTheNegativeAndPositiveClassDensities |
Fact | Monte carlo overlays the model profile on the negative and positive class densities. |
MonteCarloOnAnOlderInstanceUsesAllRowsAndTheSeparatelyBinnedPositiveClass |
Fact | Monte carlo on an older instance uses all rows and the separately binned positive class. |
MonteCarloWithoutAnyClassDataKeepsTheModelProfileInItsOwnColourSlot |
Fact | Monte carlo without any class data keeps the model profile in its own colour slot. |
MonteCarloCountsShowsFrequencyInsteadOfDensity |
Fact | Monte carlo counts shows frequency instead of density. |
MonteCarloEmptyStateNamesTheCausesAndIsIdenticalForUnknownAndUnprescribedVariables |
Fact | Monte carlo empty state names the causes and is identical for unknown and unprescribed variables. |
MonteCarloSummaryCompareseachStatisticInStandardDeviationsOfAllRows |
Fact | Monte carlo summary compareseach statistic in standard deviations of all rows. |
NegativeSummaryIsThePopulationWhenTheClassificationSelectedThePositiveRows |
Fact | Negative summary is the population when the classification selected the positive rows. |
NegativeSummaryMeanAndDeviationAreExactBySubtractionFromThePopulation |
Fact | Negative summary mean and deviation are exact by subtraction from the population. |
NegativeSummaryIsUnavailableWithoutAnAnomalyOrClassificationSummary |
Fact | Negative summary is unavailable without an anomaly or classification summary. |
QuantileInterpolatesInsideTheBin |
Fact | Quantile interpolates inside the bin. |
EdgesRejectOverlapsNonFiniteValuesAndWidenAConstantBin |
Fact | Edges reject overlaps non finite values and widen a constant bin. |
HostileNamesAreEscapedAndOutputIsDeterministicAndExternalByDefault |
Fact | Hostile names are escaped and output is deterministic and external by default. |
NonFiniteAndHugeNumbersNeverBreakTheSvg |
Fact | Non finite and huge numbers never break the svg. |
InlineStyleModeStillGivesASelfContainedSvg |
Fact | Inline style mode still gives a self contained svg. |
AChartIdKeepsTheTitleAndDescriptionIdsUnique |
Fact | A chart id keeps the title and description ids unique. |
ExhaustiveStatisticsChartServiceTests
Jube.Test.Service.ExhaustiveCharts.ExhaustiveStatisticsChartServiceTests — 7 tests. Category: Service. Collection:
Database.
| Test | Kind | Verifies |
|---|---|---|
ClassesChartHasTheTwoClassesForTheRequestedVariableOnlyAsync |
Fact | Classes chart has the two classes for the requested variable only. |
MonteCarloAndSummaryChartsCarryTheModelProfileAsync |
Fact | Monte carlo and summary charts carry the model profile. |
MonteCarloCountsModeShowsCountInsteadOfDensityAsync |
Fact | Monte carlo counts mode shows count instead of density. |
GridReturnsOneChartPerVariableInOneCallForEveryViewAsync |
Fact | Grid returns one chart per variable in one call for every view. |
UnknownForeignAndEmptyIdsGiveTheSameEmptyStateAsync |
Fact | Unknown foreign and empty ids give the same empty state. |
EveryPathRefusesACallerWithoutThePermissionAsync |
Fact | Every path refuses a caller without the permission. |
CreateWithoutAUserThrowsNotAuthenticatedAsync |
Fact | Create without a user throws not authenticated. |
ExhaustiveStatisticsPageWiringTests
Jube.Test.Service.ExhaustiveCharts.ExhaustiveStatisticsPageWiringTests — 6 tests. Category: Service.
| Test | Kind | Verifies |
|---|---|---|
PageIncludesTheStatisticsScriptAfterTheChartScript |
Fact | Page includes the statistics script after the chart script. |
ScriptUsesTheGridClassesMonteCarloSummaryAndSingleVariableRoutes |
Fact | Script uses the grid classes monte carlo summary and single variable routes. |
ScriptCarriesNoInlineStyleKendoChartOrComment |
Fact | Script carries no inline style kendo chart or comment. |
TheStatisticsGridDelegatesToTheScriptAndKeepsTheSingleChartFallback |
Fact | The statistics grid delegates to the script and keeps the single chart fallback. |
EndpointsAreRegisteredAdditivelyAndKeepTheHardenedSvgHeaders |
Fact | Endpoints are registered additively and keep the hardened svg headers. |
NoNewSourceWordsRefertoTheExcludedLibraryName |
Fact | No new source words referto the excluded library name. |
ExhaustiveTopologyChartServiceTests
Jube.Test.Service.ExhaustiveCharts.ExhaustiveTopologyChartServiceTests — 7 tests. Category: Service. Collection:
Database.
| Test | Kind | Verifies |
|---|---|---|
RefusesAnUnauthenticatedCallerAsync |
Fact | Refuses an unauthenticated caller. |
DeniesACallerWithoutThePermissionAsync |
Fact | Denies a caller without the permission. |
DrawsTheStoredNetworkWithRealVariableNamesAndSensitivityShadingAsync |
Fact | Draws the stored network with real variable names and sensitivity shading. |
StillDrawsTheNetworkWhenThereIsNoSensitivityDataAsync |
Fact | Still draws the network when there is no sensitivity data. |
ForeignTenantUnknownAndNotTrainedIdsAreAllTheSameEmptyStateAsync |
Fact | Foreign tenant unknown and not trained ids are all the same empty state. |
AnUnreadableStoredTopologyIsAMessageNotAnErrorAsync |
Fact | An unreadable stored topology is a message not an error. |
AMismatchBetweenVariableCountAndInputsFallsBackToTheStoredNamesAsync |
Fact | A mismatch between variable count and inputs falls back to the stored names. |
ExhaustiveTopologyRendererTests
Jube.Test.Service.ExhaustiveCharts.ExhaustiveTopologyRendererTests — 16 tests. Category: Service.
| Test | Kind | Verifies |
|---|---|---|
ARealStoredTopologyIsDrawnWithItsVariableNamesAndACaption |
Fact | A real stored topology is drawn with its variable names and a caption. |
EveryRealTopologyRendersSafeExternalSvgAndStatesItsActivation |
Theory | Every real topology renders safe external svg and states its activation. |
InputNodesAreShadedBySensitivityWithAKeyAndHoverDetail |
Fact | Input nodes are shaded by sensitivity with a key and hover detail. |
LiveRelevanceShadesEveryLayerNotJustInputsAndTakesPrecedenceOverSensitivity |
Fact | Live relevance shades every layer not just inputs and takes precedence over sensitivity. |
LiveRelevanceWithAMismatchedLayerCountIsIgnored |
Fact | Live relevance with a mismatched layer count is ignored. |
WithoutSensitivityTheDiagramHasNoKeyAndNoShading |
Fact | Without sensitivity the diagram has no key and no shading. |
SensitivityOnlyForUnknownNamesOrAllZeroDoesNotShadeAnything |
Fact | Sensitivity only for unknown names or all zero does not shade anything. |
ANameCountThatDoesNotMatchTheInputsFallsBackToTheStoredNamesInsteadOfFailing |
Fact | A name count that does not match the inputs falls back to the stored names instead of failing. |
HostileVariableNamesAndSensitivityNamesCannotInjectMarkup |
Fact | Hostile variable names and sensitivity names cannot inject markup. |
NoJsonGivesTheNotTrainedEmptyState |
Fact | No json gives the not trained empty state. |
UnreadableJsonGivesAClearMessageInsteadOfAnError |
Theory | Unreadable json gives a clear message instead of an error. |
AVeryWideNetworkIsDrawnAsTheDensityViewNotAnError |
Fact | A very wide network is drawn as the density view not an error. |
ANetworkBeyondTheLayerLimitOffersTheLayerSummaryInsteadOfADiagram |
Fact | A network beyond the layer limit offers the layer summary instead of a diagram. |
AnyExceptionMessageFromTheStoredJsonNeverAppearsInTheOutput |
Fact | Any exception message from the stored json never appears in the output. |
InlineModeStillWorks |
Fact | Inline mode still works. |
ATwoTwoOneNetworkIsDrawnInFull |
Fact | A two two one network is drawn in full. |
Exhaustive instance dataset
ExhaustiveDatasetWiringTests
Jube.Test.Service.ExhaustiveInstanceDataset.ExhaustiveDatasetWiringTests — 10 tests. Category: Service.
| Test | Kind | Verifies |
|---|---|---|
Page_LoadsTheDatasetScriptBeforeThePageScriptAndHasEveryControl |
Fact | Page loads the dataset script before the page script and has every control. |
PageScript_ReadsAndWritesTheDataSourceThroughTheDatasetScript |
Fact | Page script reads and writes the data source through the dataset script. |
DatasetScript_UsesTheEndpointsKendoWidgetsAndNeverInjectsHtml |
Fact | Dataset script uses the endpoints kendo widgets and never injects html. |
TheDemoEnvironmentVariableIsGoneFromCodeAndDocs |
Fact | The demo environment variable is gone from code and docs. |
EnvironmentDefaults_AreFiftyMegabytesAMillionRowsAndFiveHundredColumns |
Fact | Environment defaults are fifty megabytes a million rows and five hundred columns. |
EnvironmentOverrides_AreHonoured_AndGarbageFallsBackToDefaults |
Fact | Environment overrides are honoured and garbage falls back to defaults. |
NewSourceFiles_CarryNoCodeComments |
Fact | New source files carry no code comments. |
Endpoints_MapTheCombinedAndBothKindRoutesWithTheJsonBodyAndEncodingChecks |
Fact | Endpoints map the combined and both kind routes with the json body and encoding checks. |
NoCodeOrDocsCarryTheRetiredDatasetNames |
Fact | No code or docs carry the retired dataset names. |
NewFiles_NeverUseTheForbiddenLibraryWord |
Fact | New files never use the forbidden library word. |
ExhaustiveInstanceDatasetServiceTests
Jube.Test.Service.ExhaustiveInstanceDataset.ExhaustiveInstanceDatasetServiceTests — 29 tests. Category: Service.
Collection: Database.
| Test | Kind | Verifies |
|---|---|---|
Upload_StoresAPendingDatasetWithColumnsRowsAndWarningsAsync |
Fact | Upload stores a pending dataset with columns rows and warnings. |
Upload_ManyRows_AreBatchedAndAllStoredAsync |
Fact | Upload many rows are batched and all stored. |
Upload_RejectedFile_StoresNothingAtAllAsync |
Fact | Upload rejected file stores nothing at all. |
Upload_LateFailureAfterManyRows_RollsEverythingBackAsync |
Fact | Upload late failure after many rows rolls everything back. |
Upload_ClientDisconnectMidStream_RollsBackAndStoresNothingAsync |
Fact | Upload client disconnect mid stream rolls back and stores nothing. |
Upload_CapsFromLimits_AreEnforcedAsync |
Fact | Upload caps from limits are enforced. |
FileName_IsReducedToItsLeaf |
Theory | File name is reduced to its leaf. |
FileName_UnacceptableValuesAreRejected |
Theory | File name unacceptable values are rejected. |
Upload_HostileContentTypes_AreRejectedAsync |
Theory | Upload hostile content types are rejected. |
Upload_HostileSuppliedNames_AreRejectedOrDefaultedAsync |
Theory | Upload hostile supplied names are rejected or defaulted. |
Upload_DuplicateSuppliedName_IsRejected_AndDerivedNamesAreDeduplicatedAsync |
Fact | Upload duplicate supplied name is rejected and derived names are deduplicated. |
Confirm_ValidMapping_MakesTheDatasetUsableAsync |
Fact | Confirm valid mapping makes the dataset usable. |
Confirm_InvalidMappings_AreRefusedAndTheDatasetStaysPendingAsync |
Fact | Confirm invalid mappings are refused and the dataset stays pending. |
Confirm_ServerOwnedFieldsCannotBeInjectedThroughTheMappingAsync |
Fact | Confirm server owned fields cannot be injected through the mapping. |
Permissions_EveryOperationIsRefusedWithoutThePermissionAsync |
Fact | Permissions every operation is refused without the permission. |
Authentication_UnknownAndTenantlessUsersAreRefusedAsync |
Fact | Authentication unknown and tenantless users are refused. |
TenantIsolation_AnotherTenantSeesAndChangesNothingAsync |
Fact | Tenant isolation another tenant sees and changes nothing. |
TenantIsolation_RepositoryNeverReturnsAnotherTenantsDatasetAsync |
Fact | Tenant isolation repository never returns another tenants dataset. |
Delete_RemovesRowsAndHidesTheDatasetAsync |
Fact | Delete removes rows and hides the dataset. |
Instance_UploadedDataSource_RequiresAConfirmedDatasetOfTheSameTenantAsync |
Fact | Instance uploaded data source requires a confirmed dataset of the same tenant. |
Instance_DatasetOfAnotherTenant_IsRejected_MassAssignmentProtectedAsync |
Fact | Instance dataset of another tenant is rejected mass assignment protected. |
Instance_DataSourceValues_AreKnownOnly_AndDatasetOnlyWithUploadedAsync |
Fact | Instance data source values are known only and dataset only with uploaded. |
Instance_ValidatorWithoutADatasetRepository_FailsClosedAsync |
Fact | Instance validator without a dataset repository fails closed. |
Delete_IsRefusedWhileAnyInstanceUsesItRegardlessOfStatusAsync |
Fact | Delete is refused while any instance uses it regardless of status. |
EndToEnd_UploadConfirmTrain_ReachesAPromotedTrialWithTheMappedVariablesAsync |
Fact | End to end upload confirm train reaches a promoted trial with the mapped variables. |
Upload_CreditRiskFixture_FitsPurposeAsCategoricalAndOffersDependentAsAStringColumnAsync |
Fact | Upload credit risk fixture fits purpose as categorical and offers dependent as a string column. |
EndToEnd_CategoricalColumnAndStringDependent_TrainsSuccessfullyAsync |
Fact | End to end categorical column and string dependent trains successfully. |
EndToEnd_TheFilteredColumnIsNeverIncludedAsATrainingVariableEvenIfMappedIncludedAsync |
Fact | End to end the filtered column is never included as a training variable even if mapped included. |
Training_AnUnconfirmedOrForeignDataset_StopsAtStatusSeventeenWithoutReadingRowsAsync |
Fact | Training an unconfirmed or foreign dataset stops at status seventeen without reading rows. |
ExhaustiveInstanceJsonServiceTests
Jube.Test.Service.ExhaustiveInstanceDataset.ExhaustiveInstanceJsonServiceTests — 31 tests. Category: Service.
Collection: Database.
| Test | Kind | Verifies |
|---|---|---|
UploadJson_StoresAPendingJsonDatasetWithColumnsRowsHashAndLabelAsync |
Fact | Upload json stores a pending json dataset with columns rows hash and label. |
UploadJson_ColumnarShapeAndStringOverload_AreAcceptedAsync |
Fact | Upload json columnar shape and string overload are accepted. |
UploadJson_HasTheSameRowsAndColumnsAsTheSameDataUploadedAsCsvAsync |
Fact | Upload json has the same rows and columns as the same data uploaded as csv. |
UploadJson_RejectedBody_StoresNothingAsync |
Theory | Upload json rejected body stores nothing. |
UploadJson_ErrorLateInTheBody_RollsBackTheRowsAlreadyWrittenAsync |
Fact | Upload json error late in the body rolls back the rows already written. |
UploadJson_CapsFromTheServiceLimitsAreEnforcedAsync |
Fact | Upload json caps from the service limits are enforced. |
UploadJson_StringOverload_RejectsEmptyOversizeAndLoneSurrogatesAsync |
Fact | Upload json string overload rejects empty oversize and lone surrogates. |
UploadJson_SourceLabelThatIsAPathOrMarkup_IsRejectedAsync |
Theory | Upload json source label that is a path or markup is rejected. |
UploadJson_LongLabelIsRejected_AndMissingLabelGetsADefaultAsync |
Fact | Upload json long label is rejected and missing label gets a default. |
UploadJson_ContentTypeAndCharsetAreCheckedAsync |
Theory | Upload json content type and charset are checked. |
UploadJson_AcceptableContentTypesAreAcceptedAsync |
Theory | Upload json acceptable content types are accepted. |
JsonFileUpload_RequiresAJsonExtensionAndUsesTheLeafAsTheLabelAsync |
Fact | Json file upload requires a json extension and uses the leaf as the label. |
CsvUpload_RejectsAJsonFileNameAndJsonContentAsync |
Fact | Csv upload rejects a json file name and json content. |
JsonUpload_WithCsvContentUnderAJsonNameIsRejectedAsync |
Fact | Json upload with csv content under a json name is rejected. |
Names_AreUniqueAcrossBothKindsAndDefaultedFromTheLabelAsync |
Fact | Names are unique across both kinds and defaulted from the label. |
Confirm_MakesAJsonDatasetUsable_AndItIsNotUsableBeforeAsync |
Fact | Confirm makes a json dataset usable and it is not usable before. |
Confirm_UsesTheSharedMappingRules_ForJsonDatasetsAsync |
Fact | Confirm uses the shared mapping rules for json datasets. |
Confirm_WithTheWrongKind_FindsNothingAsync |
Fact | Confirm with the wrong kind finds nothing. |
Permissions_EveryJsonOperationIsRefusedWithoutThePermissionAsync |
Fact | Permissions every json operation is refused without the permission. |
TenantIsolation_AnotherTenantSeesAndChangesNoJsonDatasetAsync |
Fact | Tenant isolation another tenant sees and changes no json dataset. |
CombinedListing_ShowsBothKinds_AndTheKindFilterNarrowsItAsync |
Fact | Combined listing shows both kinds and the kind filter narrows it. |
Delete_RemovesTheDatasetAndItsRowsAcrossKindsAsync |
Fact | Delete removes the dataset and its rows across kinds. |
Instance_ReferencesExactlyOneConfirmedDatasetOfTheSameTenantAsync |
Fact | Instance references exactly one confirmed dataset of the same tenant. |
Instance_JsonDatasetOfAnotherTenant_IsRejectedAsync |
Fact | Instance json dataset of another tenant is rejected. |
Delete_IsRefusedWhileAnyInstanceUsesTheJsonDatasetRegardlessOfStatusAsync |
Fact | Delete is refused while any instance uses the json dataset regardless of status. |
CheckConstraint_EnforcesExactlyOneDatasetReferenceOnlyForUploadedDatasetAsync |
Fact | Check constraint enforces exactly one dataset reference only for uploaded dataset. |
Migration_CreatesTheStoresRowTablesColumnsAndIndexesOnAFreshDatabaseAsync |
Fact | Migration creates the stores row tables columns and indexes on a fresh database. |
SqlGate_DeniesEveryDatasetStoreAndRowTable |
Fact | Sql gate denies every dataset store and row table. |
EndToEnd_UploadJsonConfirmTrain_MatchesTheSameDataUploadedAsCsvAsync |
Fact | End to end upload json confirm train matches the same data uploaded as csv. |
Training_APendingOrForeignJsonDataset_StopsAtStatusSeventeenAsync |
Fact | Training a pending or foreign json dataset stops at status seventeen. |
Training_ARunReferencingBothOrNeitherDataset_StopsAtStatusSeventeenAsync |
Fact | Training a run referencing both or neither dataset stops at status seventeen. |
Exhaustive search instance
ExhaustiveSearchInstanceServiceTests
Jube.Test.Service.ExhaustiveSearchInstance.ExhaustiveSearchInstanceServiceTests — 61 tests. Category: Service.
Collection: Database.
| Test | Kind | Verifies |
|---|---|---|
InsertPersistsAndReturnsVersionOneAsync |
Fact | Insert persists and returns version one. |
InsertedRowSatisfiesTheTrainingEnginesPickupPredicateAsync |
Fact | Inserted row satisfies the training engines pickup predicate. |
GetAllReturnsCreatedRowAndGetByIdReturnsItAsync |
Fact | Get all returns created row and get by id returns it. |
GetByEntityAnalysisModelIdReturnsOnlyRowsForThatModelAsync |
Fact | Get by entity analysis model id returns only rows for that model. |
UpdateIncrementsVersionAndWritesAuditRowAsync |
Fact | Update increments version and writes audit row. |
UpdateOfRowAlreadyPickedUpForTrainingThrowsNotFoundAsync |
Fact | Update of row already picked up for training throws not found. |
SetActiveOfRowAlreadyPickedUpForTrainingSucceedsAsync |
Fact | Set active of row already picked up for training succeeds. |
SetActiveOfUnknownIdThrowsNotFoundAsync |
Fact | Set active of unknown id throws not found. |
DeleteKeepsRowReachableByIdAndHidesItFromListsAsync |
Fact | Delete keeps row reachable by id and hides it from lists. |
StopUpdatesStatusToStoppingAsync |
Fact | Stop updates status to stopping. |
StopOnUnknownGuidIsANoOpAndDoesNotThrowAsync |
Fact | Stop on unknown guid is a no op and does not throw. |
EveryMethodThrowsForbiddenWhenPermissionMissingAndWritesNoRowAsync |
Fact | Every method throws forbidden when permission missing and writes no row. |
NullOrBlankUserNameThrowsNotAuthenticatedBeforeAnyQueryAsync |
Theory | Null or blank user name throws not authenticated before any query. |
UserWithNoUserInTenantRowThrowsNotAuthenticatedAsync |
Fact | User with no user in tenant row throws not authenticated. |
UnknownUserThrowsNotAuthenticatedAsync |
Fact | Unknown user throws not authenticated. |
UserInTenantBCannotGetUpdateOrDeleteTenantARowAsync |
Fact | User in tenant b cannot get update or delete tenant a row. |
GetAllAsTenantBNeverContainsTenantARowsAsync |
Fact | Get all as tenant b never contains tenant a rows. |
NameRequiredRejectsNullEmptyOrWhitespaceAsync |
Theory | Name required rejects null empty or whitespace. |
NameOverMaximumLengthIsRejectedWithErrorCodeAsync |
Fact | Name over maximum length is rejected with error code. |
DuplicateNameWithinSameModelFailsButDifferentModelSucceedsAsync |
Fact | Duplicate name within same model fails but different model succeeds. |
InvalidEntityAnalysisModelIdIsRejectedAsync |
Fact | Invalid entity analysis model id is rejected. |
AnomalyProbabilityRequiredWhenAnomalyIsTrueAndOutOfRangeIsRejectedAsync |
Fact | Anomaly probability required when anomaly is true and out of range is rejected. |
BaseRateOutsideZeroToOneExclusiveIsRejectedAsync |
Theory | Base rate outside zero to one exclusive is rejected. |
BaseRateIsOptionalPersistsOnInsertAndUpdateAndIsSettableByTheClientAsync |
Fact | Base rate is optional persists on insert and update and is settable by the client. |
TheServerWrittenCalibrationColumnsAreNotOnTheClientWritableInstanceDto |
Fact | The server written calibration columns are not on the client writable instance dto. |
AnomalyProbabilityNotValidatedWhenAnomalyIsFalseAsync |
Fact | Anomaly probability not validated when anomaly is false. |
FilterFieldsRequiredWhenFilterIsTrueAsync |
Fact | Filter fields required when filter is true. |
FilterFieldsPersistWhenFilterIsTrueAndSuppliedAsync |
Fact | Filter fields persist when filter is true and supplied. |
TamperedIdentityAuditAndTrainingStatusFieldsOnInsertHaveNoEffectAsync |
Fact | Tampered identity audit and training status fields on insert have no effect. |
TamperedIdentityAndAuditFieldsOnUpdateHaveNoEffectAsync |
Fact | Tampered identity and audit fields on update have no effect. |
UpdateOfLockedRowThrowsNotFoundAsync |
Fact | Update of locked row throws not found. |
UpdateOfSoftDeletedRowRevivesItAsync |
Fact | Update of soft deleted row revives it. |
UpdateOfNeverExistedIdThrowsNotFoundAsync |
Fact | Update of never existed id throws not found. |
DeleteOfMissingOrAlreadyDeletedRowThrowsNotFoundAsync |
Fact | Delete of missing or already deleted row throws not found. |
ResubmitOfNonRejectedVersionThrowsApprovalRefusedAndWritesNoRowAsync |
Fact | Resubmit of non rejected version throws approval refused and writes no row. |
ResubmitOfRejectedVersionBumpsVersionArchivesOldAndKeepsContentAsync |
Fact | Resubmit of rejected version bumps version archives old and keeps content. |
ResubmitOfRejectedDeleteKeepsDeletedTrueAndReopensApprovalAsync |
Fact | Resubmit of rejected delete keeps deleted true and reopens approval. |
RetractOfNonRejectedVersionThrowsApprovalRefusedAsync |
Fact | Retract of non rejected version throws approval refused. |
RetractWithNoApprovedBaselineThrowsApprovalRefusedAsync |
Fact | Retract with no approved baseline throws approval refused. |
RetractOfRejectedEditRestoresLastApprovedContentAndStampsTheRejectionRetractedAsync |
Fact | Retract of rejected edit restores last approved content and stamps the rejection retracted. |
RetractOfRejectedDeleteUndeletesAsync |
Fact | Retract of rejected delete undeletes. |
ActiveAndLockedRoundTripBoolToByteAndBackAsync |
Fact | Active and locked round trip bool to byte and back. |
GetByIdForMissingIdReturnsNullNotExceptionAsync |
Fact | Get by id for missing id returns null not exception. |
PreCancelledTokenOnReadThrowsOperationCanceledAsync |
Fact | Pre cancelled token on read throws operation canceled. |
PermissionDeniedLogsWarnNotErrorAndGatesHoldAsync |
Fact | Permission denied logs warn not error and gates hold. |
SuccessfulInsertLogsExactlyOneInfoAndReadsLogNoInfoAsync |
Fact | Successful insert logs exactly one info and reads log no info. |
WithGatesDisabledHappyPathRecordsNoDebugInfoOrWarnAsync |
Fact | With gates disabled happy path records no debug info or warn. |
FailureLogsErrorWithExceptionAttachedAndStillPropagatesAsync |
Fact | Failure logs error with exception attached and still propagates. |
EachCallEmitsOneSpanWithOutcomeTagAsync |
Fact | Each call emits one span with outcome tag. |
EachCallRecordsOneDurationMeasurementAsync |
Fact | Each call records one duration measurement. |
AuditLogGetsExactlyOneLineIncludingReadsAsync |
Fact | Audit log gets exactly one line including reads. |
InsertPublishesExactlyOneCreatedEventAsync |
Fact | Insert publishes exactly one created event. |
ReadsAndFailuresPublishNothingAsync |
Fact | Reads and failures publish nothing. |
CatalogueRegistersUniquePascalCaseNoUnderscoreNames |
Fact | Catalogue registers unique pascal case no underscore names. |
ListAsyncClampsTakeAndPaginatesDeterministicallyAsync |
Fact | List async clamps take and paginates deterministically. |
AnomalyAlgorithmAndParametersPersistAndAreAuditedAsync |
Fact | Anomaly algorithm and parameters persist and are audited. |
DefaultAnomalyAlgorithmIsStoredAsNullAndReadBackAsNullAsync |
Fact | Default anomaly algorithm is stored as null and read back as null. |
TheAnomalyReportIsServerWrittenAndAClientSuppliedValueIsIgnoredAsync |
Fact | The anomaly report is server written and a client supplied value is ignored. |
TheAnomalyReportRoundTripsThroughTheMessagePackPreservationFormatAsync |
Fact | The anomaly report round trips through the message pack preservation format. |
InvalidAnomalyAlgorithmParametersAndContaminationAreRejectedAsync |
Theory | Invalid anomaly algorithm parameters and contamination are rejected. |
TheContaminationParameterSatisfiesTheContaminationRuleAsync |
Fact | The contamination parameter satisfies the contamination rule. |
Model scaffolding
ModelScaffoldTests
Jube.Test.Service.ModelScaffolding.ModelScaffoldTests — 13 tests. Collection: Database.
| Test | Kind | Verifies |
|---|---|---|
Copy_HasTheSameRowCountsAsTheSourceModelAsync |
Fact | Copy has the same row counts as the source model. |
Copy_RemapsEveryForeignKeyOntoTheCopyAsync |
Fact | Copy remaps every foreign key onto the copy. |
DefaultOptions_UseTheDocumentationGuidAndTheNamePrefixAsync |
Fact | Default options use the documentation guid and the name prefix. |
Options_SetTheActiveAndLockedFlagsAsync |
Theory | Options set the active and locked flags. |
DefaultExclusions_LeaveRuntimeAndCaseDataAndArchiveOutAsync |
Fact | Default exclusions leave runtime and case data and archive out. |
ExcludeTables_LeavesATableOutAndEverythingBelowItAsync |
Fact | Exclude tables leaves a table out and everything below it. |
Dispose_LeavesNoRowsBehindAsync |
Fact | Dispose leaves no rows behind. |
TwoScaffolds_LiveSideBySideAsync |
Fact | Two scaffolds live side by side. |
SuppliedTenant_IsKeptWhenTheScaffoldIsRemovedAsync |
Fact | Supplied tenant is kept when the scaffold is removed. |
NamePrefix_MustStartWithTheFixturePrefixAsync |
Fact | Name prefix must start with the fixture prefix. |
MissingSourceModel_FailsNamingTheModel_AndLeavesNothingBehindAsync |
Fact | Missing source model fails naming the model and leaves nothing behind. |
IncludeTables_NamingAnUnreachableTable_FailsLoudlyAsync |
Fact | Include tables naming an unreachable table fails loudly. |
ATableWithoutAnIdentityId_FailsNamingTheTable_AndLeavesNothingBehindAsync |
Fact | A table without an identity id fails naming the table and leaves nothing behind. |
ModelSyncTests
Jube.Test.Service.ModelScaffolding.ModelSyncTests — 4 tests. Collection: Database.
| Test | Kind | Verifies |
|---|---|---|
SharedModel_IsSynchronisedByTheRealEngine_AndListsItsCaller |
Fact | Shared model is synchronised by the real engine and lists its caller. |
IsolatedCopies_SynchroniseAlongsideTheSharedModelAsync |
Fact | Isolated copies synchronise alongside the shared model. |
ChangingAnIsolatedCopy_ThenResynchronising_IsPickedUpByTheEngineAsync |
Fact | Changing an isolated copy then resynchronising is picked up by the engine. |
SyncAsync_TimesOutSayingWhatItWasWaitingOnAsync |
Fact | Sync async times out saying what it was waiting on. |
SyncScheduleEngineTests
Jube.Test.Service.ModelScaffolding.SyncScheduleEngineTests — 8 tests. Collection: Database.
| Test | Kind | Verifies |
|---|---|---|
ASyncNowIsPickedUpByTheEngineAsync |
Fact | A sync now is picked up by the engine. |
AFutureScheduleIsNotSynchronisedBeforeItsTimeAsync |
Fact | A future schedule is not synchronised before its time. |
ASyncOnTheScheduleKeepsTheModelLoadedAsync |
Fact | A sync on the schedule keeps the model loaded. |
ADeadEngineHasItsSnapshotRemovedByTheNextLiveSyncAsync |
Fact | A dead engine has its snapshot removed by the next live sync. |
AWarningForADeadEngineIsRaisedWhileItIsWithinTheRetentionAsync |
Fact | A warning for a dead engine is raised while it is within the retention. |
AWarningForADeadEngineDropsOutAfterTheRetentionAsync |
Fact | A warning for a dead engine drops out after the retention. |
AWarningForADeadEngineIsClearedByTheNextLiveSyncAsync |
Fact | A warning for a dead engine is cleared by the next live sync. |
AnEngineThatStillReportsIsKeptThroughALiveSyncAsync |
Fact | An engine that still reports is kept through a live sync. |
