Skip to content

Commit

Permalink
update to have engine failures return false in the asset updated
Browse files Browse the repository at this point in the history
  • Loading branch information
JackLewis-digirati committed Jul 11, 2024
1 parent 1987ed9 commit 3f5b510
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 4 deletions.
14 changes: 11 additions & 3 deletions src/protagonist/CleanupHandler/AssetUpdatedHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,15 @@ public async Task<bool> HandleMessage(QueueMessage message, CancellationToken ca

if (modifiedOrAdded.Any())
{
await CleanupModified(modifiedOrAdded, assetBefore, assetAfter, s3Objects);
try
{
await CleanupModified(modifiedOrAdded, assetBefore, assetAfter, s3Objects);
}
catch (Exception ex)
{
logger.LogError(ex, "Error cleaning modified delivery channels");
return false;
}
}

if (!Equals(assetAfter.Roles ?? string.Empty, assetBefore.Roles ?? string.Empty))
Expand Down Expand Up @@ -215,7 +223,7 @@ private async Task CleanupChangedPolicy(ImageDeliveryChannel deliveryChannelModi
private async Task CleanupChangedTimebasedDeliveryChannel(ImageDeliveryChannel imageDeliveryChannel,
Asset assetAfter, HashSet<ObjectInBucket> objectsToRemove)
{
var presetList = imageDeliveryChannel.DeliveryChannelPolicy.AsTimebasedPresets();
var presetList = imageDeliveryChannel.DeliveryChannelPolicy.AsTimebasedPresets();
var keys = new List<string>();
var extensions = new List<string>();
var mediaPath = RetrieveMediaPath(assetAfter);
Expand All @@ -227,7 +235,7 @@ private async Task CleanupChangedTimebasedDeliveryChannel(ImageDeliveryChannel i
logger.LogWarning(
"retrieved no timebased presets from engine, {AssetId} will not be cleaned up for the timebased channel",
assetAfter.Id);
return;
throw new ArgumentNullException(nameof(presetDictionary), "Failed to retrieve any preset values");
}

foreach (var presetIdentifier in presetList ?? new List<string>())
Expand Down
43 changes: 43 additions & 0 deletions src/protagonist/CleanupHandlerTests/AssetUpdatedHandlerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -576,6 +576,12 @@ public async Task Handle_DoesNothing_WhenTimebasedChannelUpdatedWithInvalidPrese
},
DeliveryChannelPolicyId = 8239
};

A.CallTo(() => engineClient.GetAvPresets(A<CancellationToken>._)).Returns(new Dictionary<string, TranscoderPreset>()
{
{ "webm-policy", new ("", "some-webm-preset", "oga") },
{ "oga-policy", new ("", "some-oga-preset", "webm") }
});

var requestDetails = CreateMinimalRequestDetails(
new List<ImageDeliveryChannel>() { imageDeliveryChannelTimebased },
Expand All @@ -595,6 +601,43 @@ public async Task Handle_DoesNothing_WhenTimebasedChannelUpdatedWithInvalidPrese
A.CallTo(() => bucketWriter.DeleteFolder(A<ObjectInBucket>._, A<bool>._)).MustNotHaveHappened();
}

[Fact]
public async Task Handle_ReturnsFalse_WhenTimebasedChannelUpdatedWithNoAvPresets()
{
// Arrange
var imageDeliveryChannelAfter = new ImageDeliveryChannel()
{
Channel = AssetDeliveryChannels.Timebased,
Id = 23456,
DeliveryChannelPolicy = new DeliveryChannelPolicy()
{
Id = 8239,
Channel = AssetDeliveryChannels.Timebased,
Created = DateTime.MinValue,
Modified = DateTime.MinValue,
PolicyData = "[\"policy-not-found\"]"
},
DeliveryChannelPolicyId = 8239
};

var requestDetails = CreateMinimalRequestDetails(
new List<ImageDeliveryChannel>() { imageDeliveryChannelTimebased },
new List<ImageDeliveryChannel>() { imageDeliveryChannelAfter },
string.Empty, string.Empty, "video/*");

A.CallTo(() => cleanupHandlerAssetRepository.RetrieveAssetWithDeliveryChannels(A<AssetId>._))
.Returns(requestDetails.assetAfter);

// Act
var sut = GetSut();
var response = await sut.HandleMessage(requestDetails.queueMessage);

// Assert
response.Should().BeFalse();
A.CallTo(() => bucketWriter.DeleteFromBucket(A<ObjectInBucket[]>._)).MustNotHaveHappened();
A.CallTo(() => bucketWriter.DeleteFolder(A<ObjectInBucket>._, A<bool>._)).MustNotHaveHappened();
}

[Fact]
public async Task Handle_DoesNothing_WhenTimebasedChannelModfiedWithInvalidPresetDetails()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,10 @@ public static List<string> AsTimebasedPresets(this DeliveryChannelPolicy deliver
{
throw new InvalidOperationException("Policy is not for timebased channel");
}

var timeBasedPresets = deliveryChannelPolicy.PolicyDataAs<List<string>>();

return deliveryChannelPolicy.PolicyDataAs<List<string>>() ?? new List<string>();
return timeBasedPresets.ThrowIfNull(nameof(timeBasedPresets));
}

/// <summary>
Expand Down

0 comments on commit 3f5b510

Please sign in to comment.