Thumbnail tests are explicity about checking that the transformer is actually working

- Previously, it just got the bean and assumed it was OK
 - Now it does a check to see that the image transformer is working before running the test


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@13888 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Derek Hulley
2009-04-07 14:14:22 +00:00
parent 0f16f4536b
commit b1024fb639

View File

@@ -34,6 +34,7 @@ import java.util.Map;
import org.alfresco.model.ContentModel; import org.alfresco.model.ContentModel;
import org.alfresco.repo.content.MimetypeMap; import org.alfresco.repo.content.MimetypeMap;
import org.alfresco.repo.content.transform.AbstractContentTransformerTest; import org.alfresco.repo.content.transform.AbstractContentTransformerTest;
import org.alfresco.repo.content.transform.ContentTransformer;
import org.alfresco.repo.content.transform.magick.ImageResizeOptions; import org.alfresco.repo.content.transform.magick.ImageResizeOptions;
import org.alfresco.repo.content.transform.magick.ImageTransformationOptions; import org.alfresco.repo.content.transform.magick.ImageTransformationOptions;
import org.alfresco.repo.jscript.ClasspathScriptLocation; import org.alfresco.repo.jscript.ClasspathScriptLocation;
@@ -85,187 +86,191 @@ public class ThumbnailServiceImplTest extends BaseAlfrescoSpringTest
ContentModel.TYPE_FOLDER).getChildRef(); ContentModel.TYPE_FOLDER).getChildRef();
} }
private void checkTransformer()
/**
* TODO: Enable test (when build platform fixed) or ignore this change in merge to HEAD
*/
public void testDummy()
{ {
ContentTransformer transformer = this.contentService.getImageTransformer();
if (transformer == null)
{
fail("No transformer returned for 'getImageTransformer'");
}
// Check that it is working
ImageTransformationOptions imageTransformationOptions = new ImageTransformationOptions();
if (!transformer.isTransformable(
MimetypeMap.MIMETYPE_IMAGE_JPEG,
MimetypeMap.MIMETYPE_IMAGE_JPEG,
imageTransformationOptions))
{
fail("Image transformer is not working. Please check your image conversion command setup.");
}
} }
public void testCreateThumbnailFromImage() throws Exception public void testCreateThumbnailFromImage() throws Exception
{ {
// Check that the image transformations are available checkTransformer();
if (this.contentService.getImageTransformer() != null)
{
NodeRef jpgOrig = createOrigionalContent(this.folder, MimetypeMap.MIMETYPE_IMAGE_JPEG);
NodeRef gifOrig = createOrigionalContent(this.folder, MimetypeMap.MIMETYPE_IMAGE_GIF);
// ===== small: 64x64, marked as thumbnail ==== NodeRef jpgOrig = createOrigionalContent(this.folder, MimetypeMap.MIMETYPE_IMAGE_JPEG);
NodeRef gifOrig = createOrigionalContent(this.folder, MimetypeMap.MIMETYPE_IMAGE_GIF);
ImageResizeOptions imageResizeOptions = new ImageResizeOptions(); // ===== small: 64x64, marked as thumbnail ====
imageResizeOptions.setWidth(64);
imageResizeOptions.setHeight(64);
imageResizeOptions.setResizeToThumbnail(true);
ImageTransformationOptions imageTransformationOptions = new ImageTransformationOptions();
imageTransformationOptions.setResizeOptions(imageResizeOptions);
//ThumbnailDetails createOptions = new ThumbnailDetails();
NodeRef thumbnail1 = this.thumbnailService.createThumbnail(jpgOrig, ContentModel.PROP_CONTENT, ImageResizeOptions imageResizeOptions = new ImageResizeOptions();
MimetypeMap.MIMETYPE_IMAGE_JPEG, imageResizeOptions.setWidth(64);
imageTransformationOptions, imageResizeOptions.setHeight(64);
"small"); imageResizeOptions.setResizeToThumbnail(true);
assertNotNull(thumbnail1); ImageTransformationOptions imageTransformationOptions = new ImageTransformationOptions();
checkThumbnailed(jpgOrig, "small"); imageTransformationOptions.setResizeOptions(imageResizeOptions);
checkThumbnail("small", thumbnail1); //ThumbnailDetails createOptions = new ThumbnailDetails();
outputThumbnailTempContentLocation(thumbnail1, "jpg", "small - 64x64, marked as thumbnail");
// ===== small2: 64x64, aspect not maintained ==== NodeRef thumbnail1 = this.thumbnailService.createThumbnail(jpgOrig, ContentModel.PROP_CONTENT,
MimetypeMap.MIMETYPE_IMAGE_JPEG,
imageTransformationOptions,
"small");
assertNotNull(thumbnail1);
checkThumbnailed(jpgOrig, "small");
checkThumbnail("small", thumbnail1);
outputThumbnailTempContentLocation(thumbnail1, "jpg", "small - 64x64, marked as thumbnail");
ImageResizeOptions imageResizeOptions2 = new ImageResizeOptions(); // ===== small2: 64x64, aspect not maintained ====
imageResizeOptions2.setWidth(64);
imageResizeOptions2.setHeight(64);
imageResizeOptions2.setMaintainAspectRatio(false);
ImageTransformationOptions imageTransformationOptions2 = new ImageTransformationOptions();
imageTransformationOptions2.setResizeOptions(imageResizeOptions2);
//ThumbnailDetails createOptions2 = new ThumbnailDetails();
NodeRef thumbnail2 = this.thumbnailService.createThumbnail(jpgOrig, ContentModel.PROP_CONTENT,
MimetypeMap.MIMETYPE_IMAGE_JPEG,
imageTransformationOptions2,
"small2");
checkThumbnailed(jpgOrig, "small2");
checkThumbnail("small2", thumbnail2);
outputThumbnailTempContentLocation(thumbnail2, "jpg", "small2 - 64x64, aspect not maintained");
// ===== half: 50%x50 ===== ImageResizeOptions imageResizeOptions2 = new ImageResizeOptions();
imageResizeOptions2.setWidth(64);
imageResizeOptions2.setHeight(64);
imageResizeOptions2.setMaintainAspectRatio(false);
ImageTransformationOptions imageTransformationOptions2 = new ImageTransformationOptions();
imageTransformationOptions2.setResizeOptions(imageResizeOptions2);
//ThumbnailDetails createOptions2 = new ThumbnailDetails();
NodeRef thumbnail2 = this.thumbnailService.createThumbnail(jpgOrig, ContentModel.PROP_CONTENT,
MimetypeMap.MIMETYPE_IMAGE_JPEG,
imageTransformationOptions2,
"small2");
checkThumbnailed(jpgOrig, "small2");
checkThumbnail("small2", thumbnail2);
outputThumbnailTempContentLocation(thumbnail2, "jpg", "small2 - 64x64, aspect not maintained");
ImageResizeOptions imageResizeOptions3 = new ImageResizeOptions(); // ===== half: 50%x50 =====
imageResizeOptions3.setWidth(50);
imageResizeOptions3.setHeight(50); ImageResizeOptions imageResizeOptions3 = new ImageResizeOptions();
imageResizeOptions3.setPercentResize(true); imageResizeOptions3.setWidth(50);
ImageTransformationOptions imageTransformationOptions3 = new ImageTransformationOptions(); imageResizeOptions3.setHeight(50);
imageTransformationOptions3.setResizeOptions(imageResizeOptions3); imageResizeOptions3.setPercentResize(true);
// ThumbnailDetails createOptions3 = new ThumbnailDetails(); ImageTransformationOptions imageTransformationOptions3 = new ImageTransformationOptions();
NodeRef thumbnail3 = this.thumbnailService.createThumbnail(jpgOrig, ContentModel.PROP_CONTENT, imageTransformationOptions3.setResizeOptions(imageResizeOptions3);
MimetypeMap.MIMETYPE_IMAGE_JPEG, // ThumbnailDetails createOptions3 = new ThumbnailDetails();
imageTransformationOptions3, NodeRef thumbnail3 = this.thumbnailService.createThumbnail(jpgOrig, ContentModel.PROP_CONTENT,
"half"); MimetypeMap.MIMETYPE_IMAGE_JPEG,
checkThumbnailed(jpgOrig, "half"); imageTransformationOptions3,
checkThumbnail("half", thumbnail3); "half");
outputThumbnailTempContentLocation(thumbnail3, "jpg", "half - 50%x50%"); checkThumbnailed(jpgOrig, "half");
checkThumbnail("half", thumbnail3);
outputThumbnailTempContentLocation(thumbnail3, "jpg", "half - 50%x50%");
// ===== half2: 50%x50 from gif ===== // ===== half2: 50%x50 from gif =====
ImageResizeOptions imageResizeOptions4 = new ImageResizeOptions(); ImageResizeOptions imageResizeOptions4 = new ImageResizeOptions();
imageResizeOptions4.setWidth(50); imageResizeOptions4.setWidth(50);
imageResizeOptions4.setHeight(50); imageResizeOptions4.setHeight(50);
imageResizeOptions4.setPercentResize(true); imageResizeOptions4.setPercentResize(true);
ImageTransformationOptions imageTransformationOptions4 = new ImageTransformationOptions(); ImageTransformationOptions imageTransformationOptions4 = new ImageTransformationOptions();
imageTransformationOptions4.setResizeOptions(imageResizeOptions4); imageTransformationOptions4.setResizeOptions(imageResizeOptions4);
// ThumbnailDetails createOptions4 = new ThumbnailDetails(); // ThumbnailDetails createOptions4 = new ThumbnailDetails();
NodeRef thumbnail4 = this.thumbnailService.createThumbnail(gifOrig, ContentModel.PROP_CONTENT, NodeRef thumbnail4 = this.thumbnailService.createThumbnail(gifOrig, ContentModel.PROP_CONTENT,
MimetypeMap.MIMETYPE_IMAGE_JPEG, MimetypeMap.MIMETYPE_IMAGE_JPEG,
imageTransformationOptions4, imageTransformationOptions4,
"half2"); "half2");
checkThumbnailed(gifOrig, "half2"); checkThumbnailed(gifOrig, "half2");
checkThumbnail("half2", thumbnail4); checkThumbnail("half2", thumbnail4);
outputThumbnailTempContentLocation(thumbnail4, "jpg", "half2 - 50%x50%, from gif"); outputThumbnailTempContentLocation(thumbnail4, "jpg", "half2 - 50%x50%, from gif");
}
} }
public void testDuplicationNames() public void testDuplicationNames()
throws Exception throws Exception
{ {
if (contentService.getImageTransformer() != null) checkTransformer();
NodeRef jpgOrig = createOrigionalContent(this.folder, MimetypeMap.MIMETYPE_IMAGE_JPEG);
ImageResizeOptions imageResizeOptions = new ImageResizeOptions();
imageResizeOptions.setWidth(64);
imageResizeOptions.setHeight(64);
imageResizeOptions.setResizeToThumbnail(true);
ImageTransformationOptions imageTransformationOptions = new ImageTransformationOptions();
imageTransformationOptions.setResizeOptions(imageResizeOptions);
//ThumbnailDetails createOptions = new ThumbnailDetails();
NodeRef thumbnail1 = this.thumbnailService.createThumbnail(jpgOrig, ContentModel.PROP_CONTENT,
MimetypeMap.MIMETYPE_IMAGE_JPEG,
imageTransformationOptions,
"small");
assertNotNull(thumbnail1);
checkThumbnailed(jpgOrig, "small");
checkThumbnail("small", thumbnail1);
try
{ {
NodeRef jpgOrig = createOrigionalContent(this.folder, MimetypeMap.MIMETYPE_IMAGE_JPEG); this.thumbnailService.createThumbnail(jpgOrig, ContentModel.PROP_CONTENT,
ImageResizeOptions imageResizeOptions = new ImageResizeOptions();
imageResizeOptions.setWidth(64);
imageResizeOptions.setHeight(64);
imageResizeOptions.setResizeToThumbnail(true);
ImageTransformationOptions imageTransformationOptions = new ImageTransformationOptions();
imageTransformationOptions.setResizeOptions(imageResizeOptions);
//ThumbnailDetails createOptions = new ThumbnailDetails();
NodeRef thumbnail1 = this.thumbnailService.createThumbnail(jpgOrig, ContentModel.PROP_CONTENT,
MimetypeMap.MIMETYPE_IMAGE_JPEG, MimetypeMap.MIMETYPE_IMAGE_JPEG,
imageTransformationOptions, imageTransformationOptions,
"small"); "small");
assertNotNull(thumbnail1); fail("A duplicate exception should have been raised");
checkThumbnailed(jpgOrig, "small"); }
checkThumbnail("small", thumbnail1); catch (ThumbnailException exception)
{
try // OK since this should have been thrown
{
this.thumbnailService.createThumbnail(jpgOrig, ContentModel.PROP_CONTENT,
MimetypeMap.MIMETYPE_IMAGE_JPEG,
imageTransformationOptions,
"small");
fail("A duplicate exception should have been raised");
}
catch (ThumbnailException exception)
{
// OK since this should have been thrown
}
} }
} }
public void testThumbnailUpdate() public void testThumbnailUpdate()
throws Exception throws Exception
{ {
if (contentService.getImageTransformer() != null) checkTransformer();
{
// First create a thumbnail
NodeRef jpgOrig = createOrigionalContent(this.folder, MimetypeMap.MIMETYPE_IMAGE_JPEG);
ImageResizeOptions imageResizeOptions = new ImageResizeOptions();
imageResizeOptions.setWidth(64);
imageResizeOptions.setHeight(64);
imageResizeOptions.setResizeToThumbnail(true);
ImageTransformationOptions imageTransformationOptions = new ImageTransformationOptions();
imageTransformationOptions.setResizeOptions(imageResizeOptions);
NodeRef thumbnail1 = this.thumbnailService.createThumbnail(jpgOrig, ContentModel.PROP_CONTENT,
MimetypeMap.MIMETYPE_IMAGE_JPEG,
imageTransformationOptions,
"small");
// Update the thumbnail // First create a thumbnail
this.thumbnailService.updateThumbnail(thumbnail1, imageTransformationOptions); NodeRef jpgOrig = createOrigionalContent(this.folder, MimetypeMap.MIMETYPE_IMAGE_JPEG);
} ImageResizeOptions imageResizeOptions = new ImageResizeOptions();
imageResizeOptions.setWidth(64);
imageResizeOptions.setHeight(64);
imageResizeOptions.setResizeToThumbnail(true);
ImageTransformationOptions imageTransformationOptions = new ImageTransformationOptions();
imageTransformationOptions.setResizeOptions(imageResizeOptions);
NodeRef thumbnail1 = this.thumbnailService.createThumbnail(jpgOrig, ContentModel.PROP_CONTENT,
MimetypeMap.MIMETYPE_IMAGE_JPEG,
imageTransformationOptions,
"small");
// Update the thumbnail
this.thumbnailService.updateThumbnail(thumbnail1, imageTransformationOptions);
} }
public void testGetThumbnailByName() public void testGetThumbnailByName()
throws Exception throws Exception
{ {
if (contentService.getImageTransformer() != null) checkTransformer();
{
NodeRef jpgOrig = createOrigionalContent(this.folder, MimetypeMap.MIMETYPE_IMAGE_JPEG);
// Check for missing thumbnail NodeRef jpgOrig = createOrigionalContent(this.folder, MimetypeMap.MIMETYPE_IMAGE_JPEG);
NodeRef result1 = this.thumbnailService.getThumbnailByName(jpgOrig, ContentModel.PROP_CONTENT, "small");
assertNull("The thumbnail 'small' should have been missing", result1);
// Create the thumbnail // Check for missing thumbnail
ImageResizeOptions imageResizeOptions = new ImageResizeOptions(); NodeRef result1 = this.thumbnailService.getThumbnailByName(jpgOrig, ContentModel.PROP_CONTENT, "small");
imageResizeOptions.setWidth(64); assertNull("The thumbnail 'small' should have been missing", result1);
imageResizeOptions.setHeight(64);
imageResizeOptions.setResizeToThumbnail(true);
ImageTransformationOptions imageTransformationOptions = new ImageTransformationOptions();
imageTransformationOptions.setResizeOptions(imageResizeOptions);
this.thumbnailService.createThumbnail(jpgOrig, ContentModel.PROP_CONTENT,
MimetypeMap.MIMETYPE_IMAGE_JPEG,
imageTransformationOptions,
"small");
// Try and retrieve the thumbnail // Create the thumbnail
NodeRef result2 = this.thumbnailService.getThumbnailByName(jpgOrig, ContentModel.PROP_CONTENT, "small"); ImageResizeOptions imageResizeOptions = new ImageResizeOptions();
assertNotNull(result2); imageResizeOptions.setWidth(64);
checkThumbnail("small", result2); imageResizeOptions.setHeight(64);
imageResizeOptions.setResizeToThumbnail(true);
ImageTransformationOptions imageTransformationOptions = new ImageTransformationOptions();
imageTransformationOptions.setResizeOptions(imageResizeOptions);
this.thumbnailService.createThumbnail(jpgOrig, ContentModel.PROP_CONTENT,
MimetypeMap.MIMETYPE_IMAGE_JPEG,
imageTransformationOptions,
"small");
// Check for an other thumbnail that doesn't exist // Try and retrieve the thumbnail
NodeRef result3 = this.thumbnailService.getThumbnailByName(jpgOrig, ContentModel.PROP_CONTENT, "anotherone"); NodeRef result2 = this.thumbnailService.getThumbnailByName(jpgOrig, ContentModel.PROP_CONTENT, "small");
assertNull("The thumbnail 'anotherone' should have been missing", result3); assertNotNull(result2);
} checkThumbnail("small", result2);
// Check for an other thumbnail that doesn't exist
NodeRef result3 = this.thumbnailService.getThumbnailByName(jpgOrig, ContentModel.PROP_CONTENT, "anotherone");
assertNull("The thumbnail 'anotherone' should have been missing", result3);
} }
// TODO test getThumbnails // TODO test getThumbnails
@@ -325,35 +330,35 @@ public class ThumbnailServiceImplTest extends BaseAlfrescoSpringTest
public void testAutoUpdate() throws Exception public void testAutoUpdate() throws Exception
{ {
if (contentService.getImageTransformer() != null) checkTransformer();
final NodeRef jpgOrig = createOrigionalContent(this.folder, MimetypeMap.MIMETYPE_IMAGE_JPEG);
ThumbnailDefinition details = this.thumbnailService.getThumbnailRegistry().getThumbnailDefinition("medium");
@SuppressWarnings("unused")
final NodeRef thumbnail = this.thumbnailService.createThumbnail(jpgOrig, ContentModel.PROP_CONTENT, details.getMimetype(), details.getTransformationOptions(), details.getName());
setComplete();
endTransaction();
transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback<Object>()
{ {
final NodeRef jpgOrig = createOrigionalContent(this.folder, MimetypeMap.MIMETYPE_IMAGE_JPEG); public Object execute() throws Exception
ThumbnailDefinition details = this.thumbnailService.getThumbnailRegistry().getThumbnailDefinition("medium");
final NodeRef thumbnail = this.thumbnailService.createThumbnail(jpgOrig, ContentModel.PROP_CONTENT, details.getMimetype(), details.getTransformationOptions(), details.getName());
setComplete();
endTransaction();
transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback<Object>()
{ {
public Object execute() throws Exception String ext = ThumbnailServiceImplTest.this.mimetypeMap.getExtension(MimetypeMap.MIMETYPE_IMAGE_JPEG);
{ File origFile = AbstractContentTransformerTest.loadQuickTestFile(ext);
String ext = ThumbnailServiceImplTest.this.mimetypeMap.getExtension(MimetypeMap.MIMETYPE_IMAGE_JPEG);
File origFile = AbstractContentTransformerTest.loadQuickTestFile(ext);
ContentWriter writer = ThumbnailServiceImplTest.this.contentService.getWriter(jpgOrig, ContentModel.PROP_CONTENT, true); ContentWriter writer = ThumbnailServiceImplTest.this.contentService.getWriter(jpgOrig, ContentModel.PROP_CONTENT, true);
writer.putContent(origFile); writer.putContent(origFile);
return null; return null;
} }
}); });
// TODO // TODO
// this test should wait for the async action to run .. will need to commit transaction for that thou! // this test should wait for the async action to run .. will need to commit transaction for that thou!
//Thread.sleep(1000); //Thread.sleep(1000);
}
} }
public void testHTMLToImageAndSWF() throws Exception public void testHTMLToImageAndSWF() throws Exception