Skip to content
Snippets Groups Projects
Commit 6b935ff7 authored by xuty's avatar xuty
Browse files

Add tests

parent 7d377e68
Branches
No related merge requests found
...@@ -20,29 +20,35 @@ class MinioRequest extends BaseRequest { ...@@ -20,29 +20,35 @@ class MinioRequest extends BaseRequest {
ByteStream finalize() { ByteStream finalize() {
super.finalize(); super.finalize();
late final ByteStream byteStream; if (body == null) {
return const ByteStream(Stream.empty());
}
if (body is Stream<Uint8List>) {
return ByteStream(body);
}
late Stream<Uint8List> stream;
if (body is String) { if (body is String) {
final data = utf8.encode(body); final data = Utf8Encoder().convert(body);
headers['content-length'] = data.length.toString(); headers['content-length'] = data.length.toString();
byteStream = ByteStream.fromBytes(utf8.encode(body)); stream = Stream<Uint8List>.value(data);
} else if (body is List<int>) { } else if (body is Uint8List) {
stream = Stream<Uint8List>.value(body);
headers['content-length'] = body.length.toString(); headers['content-length'] = body.length.toString();
byteStream = ByteStream.fromBytes(body);
} else if (body is Stream<List<int>>) {
byteStream = ByteStream(body);
} else {
throw UnsupportedError('unsupported body type: ${body.runtimeType}');
} }
stream = stream.transform(BlockStream(1 << 16));
if (onProgress == null) { if (onProgress == null) {
return byteStream; return ByteStream(stream);
} }
var bytesRead = 0; var bytesRead = 0;
return ByteStream( return ByteStream(
byteStream.transform( stream.transform(
StreamTransformer.fromHandlers( StreamTransformer.fromHandlers(
handleData: (data, sink) { handleData: (data, sink) {
sink.add(data); sink.add(data);
......
...@@ -118,7 +118,7 @@ class MinioUploader implements StreamConsumer<Uint8List> { ...@@ -118,7 +118,7 @@ class MinioUploader implements StreamConsumer<Uint8List> {
queries: queries, queries: queries,
bucket: bucket, bucket: bucket,
object: object, object: object,
payload: Stream.value(chunk).transform(BlockStream(1 << 16)), payload: chunk,
onProgress: _updateProgress, onProgress: _updateProgress,
); );
......
...@@ -398,8 +398,33 @@ void testPutObject() { ...@@ -398,8 +398,33 @@ void testPutObject() {
Stream.value(objectData), Stream.value(objectData),
onProgress: (bytes) => progress = bytes, onProgress: (bytes) => progress = bytes,
); );
await minio.removeObject(bucketName, objectName);
expect(progress, equals(objectData.length)); expect(progress, equals(objectData.length));
});
test('medium size file upload works', () async {
final objectName = uniqueName();
final dataLength = 1024 * 1024;
final data = Uint8List.fromList(List<int>.generate(dataLength, (i) => i));
await minio.putObject(bucketName, objectName, Stream.value(data));
final stat = await minio.statObject(bucketName, objectName);
await minio.removeObject(bucketName, objectName);
expect(stat.size, equals(dataLength));
});
test('large file upload works', () async {
final objectName = uniqueName();
final dataLength = 12 * 1024 * 1024;
final data = Uint8List.fromList(List<int>.generate(dataLength, (i) => i));
await minio.putObject(
bucketName,
objectName,
Stream.value(data),
chunkSize: 5 * 1024 * 1024,
);
final stat = await minio.statObject(bucketName, objectName);
await minio.removeObject(bucketName, objectName); await minio.removeObject(bucketName, objectName);
expect(stat.size, equals(dataLength));
}); });
}); });
} }
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment