Skip to content

Commit 0dbf1dd

Browse files
committed
add image test case
1 parent ead3a61 commit 0dbf1dd

File tree

3 files changed

+277
-14
lines changed

3 files changed

+277
-14
lines changed

src/main/java/com/aliyun/oss/internal/SignUtils.java

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -122,15 +122,6 @@ public static String buildCanonicalString(String method, String resourcePath,
122122
headersToSign.put(HttpHeaders.CONTENT_MD5.toLowerCase(), "");
123123
}
124124

125-
// Add all parameters that prefixed with "x-oss-" into headers to sign
126-
if (request.getParameters() != null) {
127-
for(Map.Entry<String, String> p : request.getParameters().entrySet()) {
128-
if (p.getKey().startsWith(OSSHeaders.OSS_PREFIX)) {
129-
headersToSign.put(p.getKey(), p.getValue());
130-
}
131-
}
132-
}
133-
134125
// Append all headers to sign to canonical string
135126
for(Map.Entry<String, String> entry : headersToSign.entrySet()) {
136127
String key = entry.getKey();
Lines changed: 276 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,276 @@
1+
/*
2+
* Licensed to the Apache Software Foundation (ASF) under one
3+
* or more contributor license agreements. See the NOTICE file
4+
* distributed with this work for additional information
5+
* regarding copyright ownership. The ASF licenses this file
6+
* to you under the Apache License, Version 2.0 (the
7+
* "License"); you may not use this file except in compliance
8+
* with the License. You may obtain a copy of the License at
9+
*
10+
* http://www.apache.org/licenses/LICENSE-2.0
11+
*
12+
* Unless required by applicable law or agreed to in writing,
13+
* software distributed under the License is distributed on an
14+
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15+
* KIND, either express or implied. See the License for the
16+
* specific language governing permissions and limitations
17+
* under the License.
18+
*/
19+
20+
package com.aliyun.oss.integrationtests;
21+
22+
import java.io.File;
23+
import java.io.IOException;
24+
import java.lang.reflect.InvocationTargetException;
25+
26+
import junit.framework.Assert;
27+
import net.sf.json.JSONObject;
28+
29+
import org.apache.commons.beanutils.PropertyUtils;
30+
import org.junit.Test;
31+
32+
import com.aliyun.oss.common.utils.IOUtils;
33+
import com.aliyun.oss.model.GetObjectRequest;
34+
import com.aliyun.oss.model.OSSObject;
35+
import com.aliyun.oss.utils.ResourceUtils;
36+
37+
/**
38+
* 图片处理服务测试
39+
*/
40+
public class ImageTest extends TestBase {
41+
42+
final private static String originalImage = "oss/example.jpg";
43+
final private static String newImage = "oss/new-example.jpg";
44+
45+
@Override
46+
public void setUp() throws Exception {
47+
super.setUp();
48+
ossClient.putObject(bucketName, originalImage, new File(ResourceUtils.getTestFilename(originalImage)));
49+
}
50+
51+
@Override
52+
public void tearDown() throws Exception {
53+
ossClient.deleteObject(bucketName, originalImage);
54+
ossClient.deleteObject(bucketName, newImage);
55+
super.tearDown();
56+
}
57+
58+
@Test
59+
public void testResizeImage() {
60+
String style = "image/resize,m_fixed,w_100,h_100"; // 缩放
61+
62+
try {
63+
GetObjectRequest request = new GetObjectRequest(bucketName, originalImage);
64+
request.addParameter("x-oss-process", style);
65+
66+
OSSObject ossObject = ossClient.getObject(request);
67+
ossClient.putObject(bucketName, newImage, ossObject.getObjectContent());
68+
69+
ImageInfo imageInfo = getImageInfo(bucketName, newImage);
70+
Assert.assertEquals(imageInfo.getHeight(), 100);
71+
Assert.assertEquals(imageInfo.getWidth(), 100); // 3587
72+
Assert.assertEquals(imageInfo.getFormat(), "jpg");
73+
74+
} catch (Exception e) {
75+
e.printStackTrace();
76+
Assert.fail(e.getMessage());
77+
}
78+
}
79+
80+
@Test
81+
public void testCropImage() {
82+
String style = "image/crop,w_100,h_100,x_100,y_100,r_1"; // 裁剪
83+
84+
try {
85+
GetObjectRequest request = new GetObjectRequest(bucketName, originalImage);
86+
request.addParameter("x-oss-process", style);
87+
88+
OSSObject ossObject = ossClient.getObject(request);
89+
ossClient.putObject(bucketName, newImage, ossObject.getObjectContent());
90+
91+
ImageInfo imageInfo = getImageInfo(bucketName, newImage);
92+
Assert.assertEquals(imageInfo.getHeight(), 100);
93+
Assert.assertEquals(imageInfo.getWidth(), 100);
94+
Assert.assertEquals(imageInfo.getSize(), 2281);
95+
Assert.assertEquals(imageInfo.getFormat(), "jpg");
96+
97+
} catch (Exception e) {
98+
e.printStackTrace();
99+
Assert.fail(e.getMessage());
100+
}
101+
}
102+
103+
@Test
104+
public void testRotateImage() {
105+
String style = "image/rotate,90"; // 旋转
106+
107+
try {
108+
GetObjectRequest request = new GetObjectRequest(bucketName,
109+
originalImage);
110+
request.addParameter("x-oss-process", style);
111+
112+
OSSObject ossObject = ossClient.getObject(request);
113+
ossClient.putObject(bucketName, newImage, ossObject.getObjectContent());
114+
115+
ImageInfo imageInfo = getImageInfo(bucketName, originalImage);
116+
Assert.assertEquals(imageInfo.getHeight(), 267);
117+
Assert.assertEquals(imageInfo.getWidth(), 400);
118+
Assert.assertEquals(imageInfo.getSize(), 21839);
119+
Assert.assertEquals(imageInfo.getFormat(), "jpg");
120+
121+
imageInfo = getImageInfo(bucketName, newImage);
122+
Assert.assertEquals(imageInfo.getHeight(), 400);
123+
Assert.assertEquals(imageInfo.getWidth(), 267);
124+
Assert.assertEquals(imageInfo.getSize(), 21509);
125+
Assert.assertEquals(imageInfo.getFormat(), "jpg");
126+
127+
} catch (Exception e) {
128+
e.printStackTrace();
129+
Assert.fail(e.getMessage());
130+
}
131+
}
132+
133+
@Test
134+
public void testSharpenImage() {
135+
String style = "image/sharpen,100"; // 锐化
136+
137+
try {
138+
GetObjectRequest request = new GetObjectRequest(bucketName, originalImage);
139+
request.addParameter("x-oss-process", style);
140+
141+
OSSObject ossObject = ossClient.getObject(request);
142+
ossClient.putObject(bucketName, newImage, ossObject.getObjectContent());
143+
144+
ImageInfo imageInfo = getImageInfo(bucketName, newImage);
145+
Assert.assertEquals(imageInfo.getHeight(), 267);
146+
Assert.assertEquals(imageInfo.getWidth(), 400);
147+
Assert.assertEquals(imageInfo.getSize(), 24183);
148+
Assert.assertEquals(imageInfo.getFormat(), "jpg");
149+
150+
} catch (Exception e) {
151+
e.printStackTrace();
152+
Assert.fail(e.getMessage());
153+
}
154+
}
155+
156+
@Test
157+
public void testWatermarkImage() {
158+
String style = "image/watermark,text_SGVsbG8g5Zu-54mH5pyN5YqhIQ"; // 文字水印
159+
160+
try {
161+
GetObjectRequest request = new GetObjectRequest(bucketName, originalImage);
162+
request.addParameter("x-oss-process", style);
163+
164+
OSSObject ossObject = ossClient.getObject(request);
165+
ossClient.putObject(bucketName, newImage, ossObject.getObjectContent());
166+
167+
ImageInfo imageInfo = getImageInfo(bucketName, newImage);
168+
System.out.println(imageInfo);
169+
Assert.assertEquals(imageInfo.getHeight(), 267);
170+
Assert.assertEquals(imageInfo.getWidth(), 400);
171+
Assert.assertEquals(imageInfo.getSize(), 26953);
172+
Assert.assertEquals(imageInfo.getFormat(), "jpg");
173+
174+
} catch (Exception e) {
175+
e.printStackTrace();
176+
Assert.fail(e.getMessage());
177+
}
178+
}
179+
180+
@Test
181+
public void testFormatImage() {
182+
String style = "image/format,png"; // 文字水印
183+
184+
try {
185+
GetObjectRequest request = new GetObjectRequest(bucketName, originalImage);
186+
request.addParameter("x-oss-process", style);
187+
188+
OSSObject ossObject = ossClient.getObject(request);
189+
ossClient.putObject(bucketName, newImage, ossObject.getObjectContent());
190+
191+
ImageInfo imageInfo = getImageInfo(bucketName, newImage);
192+
System.out.println(imageInfo);
193+
Assert.assertEquals(imageInfo.getHeight(), 267);
194+
Assert.assertEquals(imageInfo.getWidth(), 400);
195+
Assert.assertEquals(imageInfo.getSize(), 160733);
196+
Assert.assertEquals(imageInfo.getFormat(), "png");
197+
198+
} catch (Exception e) {
199+
e.printStackTrace();
200+
Assert.fail(e.getMessage());
201+
}
202+
}
203+
204+
private static ImageInfo getImageInfo(final String bucket, final String image) throws IOException, IllegalAccessException, InvocationTargetException, NoSuchMethodException {
205+
GetObjectRequest request = new GetObjectRequest(bucketName, image);
206+
request.addParameter("x-oss-process", "image/info");
207+
OSSObject ossObject = ossClient.getObject(request);
208+
209+
String jsonStr = IOUtils.readStreamAsString(ossObject.getObjectContent(), "UTF-8");
210+
ossObject.getObjectContent().close();
211+
212+
JSONObject jsonObject = JSONObject.fromObject(jsonStr);
213+
Object bean = JSONObject.toBean(jsonObject);
214+
215+
long height = Long.parseLong((String) PropertyUtils.getProperty(PropertyUtils.getProperty(bean, "ImageHeight"), "value"));
216+
long width = Long.parseLong((String) PropertyUtils.getProperty(PropertyUtils.getProperty(bean, "ImageWidth"), "value"));
217+
long size = Long.parseLong((String) PropertyUtils.getProperty(PropertyUtils.getProperty(bean, "FileSize"), "value"));
218+
String format = (String) PropertyUtils.getProperty(PropertyUtils.getProperty(bean, "Format"), "value");
219+
220+
return new ImageInfo(height, width, size, format);
221+
}
222+
223+
static class ImageInfo {
224+
225+
public ImageInfo(long height, long width, long size, String format) {
226+
super();
227+
this.height = height;
228+
this.width = width;
229+
this.size = size;
230+
this.format = format;
231+
}
232+
233+
public long getHeight() {
234+
return height;
235+
}
236+
237+
public void setHeight(long height) {
238+
this.height = height;
239+
}
240+
241+
public long getWidth() {
242+
return width;
243+
}
244+
245+
public void setWidth(long width) {
246+
this.width = width;
247+
}
248+
249+
public long getSize() {
250+
return size;
251+
}
252+
253+
public void setSize(long size) {
254+
this.size = size;
255+
}
256+
257+
public String getFormat() {
258+
return format;
259+
}
260+
261+
public void setFormat(String format) {
262+
this.format = format;
263+
}
264+
265+
public String toString() {
266+
return "[height:" + this.height + ",width:" + this.width +
267+
",size:" + this.size + ",format:" + this.format + "]\n";
268+
}
269+
270+
private long height;
271+
private long width;
272+
private long size;
273+
private String format;
274+
}
275+
276+
}

src/test/java/com/aliyun/oss/integrationtests/RtmpTest.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,9 @@
4545

4646
/**
4747
* Test rtmp
48-
* RTMP尚未上线,case暂时忽略。
4948
*/
50-
@Ignore
5149
public class RtmpTest extends TestBase {
52-
53-
//private static String bucketName = "oss-live-channel-1";
54-
50+
5551
@Test
5652
public void testCreateLiveChannelDefault() {
5753
final String liveChannel = "normal-create-live-channel-default";

0 commit comments

Comments
 (0)