Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Gpdb
提交
c962ef2c
G
Gpdb
项目概览
Greenplum
/
Gpdb
通知
7
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
Gpdb
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
c962ef2c
编写于
7月 21, 2016
作者:
A
Adam Lee
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
s3ext: amend comments and signatures
上级
cb84ba41
变更
23
隐藏空白更改
内联
并排
Showing
23 changed file
with
73 addition
and
68 deletion
+73
-68
gpAux/extensions/gps3ext/include/decompress_reader.h
gpAux/extensions/gps3ext/include/decompress_reader.h
+1
-1
gpAux/extensions/gps3ext/include/gpcommon.h
gpAux/extensions/gps3ext/include/gpcommon.h
+1
-1
gpAux/extensions/gps3ext/include/restful_service.h
gpAux/extensions/gps3ext/include/restful_service.h
+1
-1
gpAux/extensions/gps3ext/include/s3bucket_reader.h
gpAux/extensions/gps3ext/include/s3bucket_reader.h
+3
-3
gpAux/extensions/gps3ext/include/s3common.h
gpAux/extensions/gps3ext/include/s3common.h
+1
-3
gpAux/extensions/gps3ext/include/s3common_reader.h
gpAux/extensions/gps3ext/include/s3common_reader.h
+1
-1
gpAux/extensions/gps3ext/include/s3interface.h
gpAux/extensions/gps3ext/include/s3interface.h
+1
-0
gpAux/extensions/gps3ext/include/s3log.h
gpAux/extensions/gps3ext/include/s3log.h
+7
-7
gpAux/extensions/gps3ext/include/s3url_parser.h
gpAux/extensions/gps3ext/include/s3url_parser.h
+1
-0
gpAux/extensions/gps3ext/include/s3utils.h
gpAux/extensions/gps3ext/include/s3utils.h
+6
-6
gpAux/extensions/gps3ext/src/decompress_reader.cpp
gpAux/extensions/gps3ext/src/decompress_reader.cpp
+2
-1
gpAux/extensions/gps3ext/src/gpreader.cpp
gpAux/extensions/gps3ext/src/gpreader.cpp
+2
-2
gpAux/extensions/gps3ext/src/gps3ext.cpp
gpAux/extensions/gps3ext/src/gps3ext.cpp
+1
-2
gpAux/extensions/gps3ext/src/s3bucket_reader.cpp
gpAux/extensions/gps3ext/src/s3bucket_reader.cpp
+2
-2
gpAux/extensions/gps3ext/src/s3common_reader.cpp
gpAux/extensions/gps3ext/src/s3common_reader.cpp
+3
-0
gpAux/extensions/gps3ext/src/s3conf.cpp
gpAux/extensions/gps3ext/src/s3conf.cpp
+1
-1
gpAux/extensions/gps3ext/src/s3http_headers.cpp
gpAux/extensions/gps3ext/src/s3http_headers.cpp
+1
-1
gpAux/extensions/gps3ext/src/s3interface.cpp
gpAux/extensions/gps3ext/src/s3interface.cpp
+2
-1
gpAux/extensions/gps3ext/src/s3key_reader.cpp
gpAux/extensions/gps3ext/src/s3key_reader.cpp
+2
-1
gpAux/extensions/gps3ext/src/s3uploader.cpp
gpAux/extensions/gps3ext/src/s3uploader.cpp
+8
-8
gpAux/extensions/gps3ext/src/s3utils.cpp
gpAux/extensions/gps3ext/src/s3utils.cpp
+6
-6
gpAux/extensions/gps3ext/test/gpreader_test.cpp
gpAux/extensions/gps3ext/test/gpreader_test.cpp
+2
-2
gpAux/extensions/gps3ext/test/s3bucket_reader_test.cpp
gpAux/extensions/gps3ext/test/s3bucket_reader_test.cpp
+18
-18
未找到文件。
gpAux/extensions/gps3ext/include/decompress_reader.h
浏览文件 @
c962ef2c
...
...
@@ -4,7 +4,7 @@
#include <zlib.h>
#include "reader.h"
// 2
56K
by default
// 2
MB
by default
extern
uint64_t
S3_ZIP_CHUNKSIZE
;
class
DecompressReader
:
public
Reader
{
...
...
gpAux/extensions/gps3ext/include/gpcommon.h
浏览文件 @
c962ef2c
...
...
@@ -5,7 +5,7 @@
#include <signal.h>
#include <sys/types.h>
// GPDB's global va
l
// GPDB's global va
riable
extern
volatile
bool
QueryCancelPending
;
// TODO change to functions getgpsegmentId() and getgpsegmentCount()
...
...
gpAux/extensions/gps3ext/include/restful_service.h
浏览文件 @
c962ef2c
...
...
@@ -14,7 +14,7 @@ using std::vector;
using
std
::
map
;
enum
ResponseStatus
{
RESPONSE_OK
,
// everything is
ok
RESPONSE_OK
,
// everything is
OK
RESPONSE_FAIL
,
// curl failed (i.e., the status is not CURLE_OK)
RESPONSE_ERROR
,
// server error (server return code is not 200)
};
...
...
gpAux/extensions/gps3ext/include/s3bucket_reader.h
浏览文件 @
c962ef2c
...
...
@@ -27,10 +27,10 @@ class S3BucketReader : public Reader {
this
->
upstreamReader
=
reader
;
}
void
validat
eURL
();
void
validat
eURL
(
const
string
&
url
)
{
void
pars
eURL
();
void
pars
eURL
(
const
string
&
url
)
{
this
->
url
=
url
;
validat
eURL
();
pars
eURL
();
};
ListBucketResult
*
getKeyList
()
{
...
...
gpAux/extensions/gps3ext/include/s3common.h
浏览文件 @
c962ef2c
...
...
@@ -24,10 +24,8 @@ enum Method { GET, PUT, POST, DELETE, HEAD };
void
SignRequestV4
(
const
string
&
method
,
HTTPHeaders
*
h
,
const
string
&
orig_region
,
const
string
&
path
,
const
string
&
query
,
const
S3Credential
&
cred
);
char
*
get_opt_s3
(
const
char
*
url
,
const
char
*
key
);
string
get_opt_s3
(
const
string
&
options
,
const
string
&
key
);
char
*
truncate_options
(
const
char
*
url_with_options
);
string
truncate_options
(
const
string
&
url_with_options
);
#endif // __S3_COMMON_H__
#endif // __S3_COMMON_H__
\ No newline at end of file
gpAux/extensions/gps3ext/include/s3common_reader.h
浏览文件 @
c962ef2c
...
...
@@ -6,7 +6,7 @@
class
S3CommonReader
:
public
Reader
{
public:
S3CommonReader
()
{
S3CommonReader
()
:
upstreamReader
(
NULL
),
s3service
(
NULL
)
{
}
virtual
~
S3CommonReader
()
{
...
...
gpAux/extensions/gps3ext/include/s3interface.h
浏览文件 @
c962ef2c
...
...
@@ -30,6 +30,7 @@ struct BucketContent {
}
~
BucketContent
()
{
}
string
getName
()
const
{
return
this
->
name
;
};
...
...
gpAux/extensions/gps3ext/include/s3log.h
浏览文件 @
c962ef2c
#ifndef __S3
LOG
__
#define __S3
LOG
__
#ifndef __S3
_LOG_H
__
#define __S3
_LOG_H
__
#include <cstdarg>
#include <cstdio>
...
...
@@ -13,10 +13,10 @@ enum LOGLEVEL { EXT_FATAL, EXT_ERROR, EXT_WARNING, EXT_INFO, EXT_DEBUG };
// log type
enum
LOGTYPE
{
REMOTE_LOG
,
// log to remote
udp
server
LOCAL_LOG
,
// log to local
unix dgram
domain socket
INTERNAL_LOG
,
// use
pg elog
STDERR_LOG
// use
stderr
REMOTE_LOG
,
// log to remote
UDP
server
LOCAL_LOG
,
// log to local
Unix
domain socket
INTERNAL_LOG
,
// use
PostgreSQL's elog()
STDERR_LOG
// use
STDERR
};
void
LogMessage
(
LOGLEVEL
level
,
const
char
*
fmt
,
...);
...
...
@@ -48,4 +48,4 @@ LOGLEVEL getLogLevel(const char* v);
void
InitRemoteLog
();
#endif // __S3
LOG
__
#endif // __S3
_LOG_H
__
\ No newline at end of file
gpAux/extensions/gps3ext/include/s3url_parser.h
浏览文件 @
c962ef2c
...
...
@@ -24,6 +24,7 @@ class UrlParser {
}
private:
// get the string of URL field
string
extractField
(
const
struct
http_parser_url
*
u
,
http_parser_url_fields
i
);
string
schema
;
...
...
gpAux/extensions/gps3ext/include/s3utils.h
浏览文件 @
c962ef2c
#ifndef __S3_UTIL
FUNCTIONS
__
#define __S3_UTIL
FUNCTIONS
__
#ifndef __S3_UTIL
S_H
__
#define __S3_UTIL
S_H
__
#include <stdint.h>
#include <sys/types.h>
...
...
@@ -69,12 +69,12 @@ class Config {
ini_t
*
_conf
;
};
bool
to_bool
(
st
d
::
st
ring
str
);
bool
to_bool
(
string
str
);
st
d
::
string
uri_encode
(
const
std
::
string
&
src
);
st
ring
uri_encode
(
const
string
&
src
);
st
d
::
string
uri_decode
(
const
std
::
string
&
src
);
st
ring
uri_decode
(
const
string
&
src
);
void
find_replace
(
string
&
str
,
const
string
&
find
,
const
string
&
replace
);
#endif // _
UTILFUNCTIONS
_
#endif // _
_S3_UTILS_H_
_
gpAux/extensions/gps3ext/src/decompress_reader.cpp
浏览文件 @
c962ef2c
#include <algorithm>
#define __STDC_FORMAT_MACROS
#include <inttypes.h>
#include <string.h>
...
...
@@ -36,7 +37,7 @@ void DecompressReader::setReader(Reader *reader) {
}
void
DecompressReader
::
open
(
const
ReaderParams
&
params
)
{
// allocate inflate state
// allocate inflate state
for zlib
zstream
.
zalloc
=
Z_NULL
;
zstream
.
zfree
=
Z_NULL
;
zstream
.
opaque
=
Z_NULL
;
...
...
gpAux/extensions/gps3ext/src/gpreader.cpp
浏览文件 @
c962ef2c
...
...
@@ -11,6 +11,8 @@
#include "s3macros.h"
#include "s3utils.h"
string
gpReaderErrorMessage
;
// Thread related functions, called only by gpreader and gpcheckcloud
#define MUTEX_TYPE pthread_mutex_t
#define MUTEX_SETUP(x) pthread_mutex_init(&(x), NULL)
...
...
@@ -61,8 +63,6 @@ int thread_cleanup(void) {
return
1
;
}
string
gpReaderErrorMessage
;
GPReader
::
GPReader
(
const
string
&
url
)
{
constructReaderParam
(
url
);
restfulServicePtr
=
&
restfulService
;
...
...
gpAux/extensions/gps3ext/src/gps3ext.cpp
浏览文件 @
c962ef2c
// Required by building
cpp
dynamic library via Makefile of GPDB.
// Required by building
CPP
dynamic library via Makefile of GPDB.
#define PGDLLIMPORT "C"
#include <signal.h>
...
...
@@ -24,7 +24,6 @@
#include "s3utils.h"
/* Do the module magic dance */
PG_MODULE_MAGIC
;
PG_FUNCTION_INFO_V1
(
s3_export
);
PG_FUNCTION_INFO_V1
(
s3_import
);
...
...
gpAux/extensions/gps3ext/src/s3bucket_reader.cpp
浏览文件 @
c962ef2c
...
...
@@ -44,7 +44,7 @@ void S3BucketReader::open(const ReaderParams ¶ms) {
this
->
chunkSize
=
params
.
getChunkSize
();
this
->
numOfChunks
=
params
.
getNumOfChunks
();
this
->
validat
eURL
();
this
->
pars
eURL
();
CHECK_OR_DIE
(
this
->
s3interface
!=
NULL
);
...
...
@@ -188,7 +188,7 @@ void S3BucketReader::SetBucketAndPrefix() {
this
->
prefix
=
url
.
substr
(
ibegin
+
1
,
url
.
length
()
-
ibegin
-
1
);
}
void
S3BucketReader
::
validat
eURL
()
{
void
S3BucketReader
::
pars
eURL
()
{
this
->
SetSchema
();
this
->
SetRegion
();
this
->
SetBucketAndPrefix
();
...
...
gpAux/extensions/gps3ext/src/s3common_reader.cpp
浏览文件 @
c962ef2c
...
...
@@ -3,8 +3,10 @@
void
S3CommonReader
::
open
(
const
ReaderParams
&
params
)
{
this
->
keyReader
.
setS3interface
(
s3service
);
S3CompressionType
compressionType
=
s3service
->
checkCompressionType
(
params
.
getKeyUrl
(),
params
.
getRegion
(),
params
.
getCred
());
switch
(
compressionType
)
{
case
S3_COMPRESSION_GZIP
:
this
->
upstreamReader
=
&
this
->
decompressReader
;
...
...
@@ -16,6 +18,7 @@ void S3CommonReader::open(const ReaderParams ¶ms) {
default:
CHECK_OR_DIE_MSG
(
false
,
"%s"
,
"unknown file type"
);
};
this
->
upstreamReader
->
open
(
params
);
}
...
...
gpAux/extensions/gps3ext/src/s3conf.cpp
浏览文件 @
c962ef2c
...
...
@@ -50,7 +50,7 @@ int32_t s3ext_segnum = -1;
int32_t
s3ext_logsock_udp
=
-
1
;
struct
sockaddr_in
s3ext_logserveraddr
;
// not thread safe
!!
// not thread safe
bool
InitConfig
(
const
string
&
conf_path
,
const
string
section
=
"default"
)
{
if
(
conf_path
==
""
)
{
#ifndef S3_STANDALONE
...
...
gpAux/extensions/gps3ext/src/s3http_headers.cpp
浏览文件 @
c962ef2c
...
...
@@ -23,7 +23,7 @@ HTTPHeaders::~HTTPHeaders() {
this
->
FreeList
();
}
bool
HTTPHeaders
::
Add
(
HeaderField
f
,
const
st
d
::
st
ring
&
v
)
{
bool
HTTPHeaders
::
Add
(
HeaderField
f
,
const
string
&
v
)
{
if
(
v
.
empty
())
{
return
false
;
}
else
{
...
...
gpAux/extensions/gps3ext/src/s3interface.cpp
浏览文件 @
c962ef2c
...
...
@@ -19,6 +19,7 @@
#include "s3interface.h"
using
std
::
stringstream
;
// use destructor ~XMLContextHolder() to do the cleanup
class
XMLContextHolder
{
public:
XMLContextHolder
(
xmlParserCtxtPtr
ctx
)
:
context
(
ctx
)
{
...
...
@@ -88,7 +89,7 @@ HTTPHeaders S3Service::composeHTTPHeaders(const string &url, const string &marke
UrlParser
p
(
url
);
st
d
::
st
ringstream
query
;
stringstream
query
;
if
(
!
marker
.
empty
())
{
query
<<
"marker="
<<
marker
;
if
(
!
prefix
.
empty
())
{
...
...
gpAux/extensions/gps3ext/src/s3key_reader.cpp
浏览文件 @
c962ef2c
...
...
@@ -109,7 +109,7 @@ uint64_t ChunkBuffer::read(char* buf, uint64_t len) {
return
lenToRead
;
}
// returning
-1
means error
// returning
uint64_t(-1)
means error
uint64_t
ChunkBuffer
::
fill
()
{
pthread_mutex_lock
(
&
this
->
statusMutex
);
while
(
this
->
status
!=
ReadyToFill
)
{
...
...
@@ -249,6 +249,7 @@ uint64_t S3KeyReader::read(char* buf, uint64_t count) {
return
readLen
;
}
// reset marks before reading next key
void
S3KeyReader
::
reset
()
{
this
->
sharedError
=
false
;
this
->
curReadingChunk
=
0
;
...
...
gpAux/extensions/gps3ext/src/s3uploader.cpp
浏览文件 @
c962ef2c
...
...
@@ -169,8 +169,8 @@ const char *GetUploadId(const char *host, const char *bucket, const char *obj_na
// <Key>example-object</Key>
// <UploadId>VXBsb2FkIElEIGZvciA2aWWpbmcncyBteS1tb3ZpZS5tMnRzIHVwbG9hZA</UploadId>
// </InitiateMultipartUploadResult>
st
d
::
st
ringstream
url
;
st
d
::
st
ringstream
path_with_query
;
stringstream
url
;
stringstream
path_with_query
;
XMLInfo
xml
;
xml
.
ctxt
=
NULL
;
...
...
@@ -248,8 +248,8 @@ const char *GetUploadId(const char *host, const char *bucket, const char *obj_na
const
char
*
PartPutS3Object
(
const
char
*
host
,
const
char
*
bucket
,
const
char
*
obj_name
,
const
S3Credential
&
cred
,
const
char
*
data
,
uint64_t
data_size
,
uint64_t
part_number
,
const
char
*
upload_id
)
{
st
d
::
st
ringstream
url
;
st
d
::
st
ringstream
path_with_query
;
stringstream
url
;
stringstream
path_with_query
;
XMLInfo
xml
;
xml
.
ctxt
=
NULL
;
...
...
@@ -353,7 +353,7 @@ const char *PartPutS3Object(const char *host, const char *bucket, const char *ob
// TODO general header content extracting func
uint64_t
etag_start_pos
=
out
.
str
().
find
(
"ETag: "
)
+
6
;
st
d
::
st
ring
etag_to_end
=
out
.
str
().
substr
(
etag_start_pos
);
string
etag_to_end
=
out
.
str
().
substr
(
etag_start_pos
);
// RFC 2616 states "HTTP/1.1 defines the sequence CR LF as the end-of-line
// marker for all protocol elements except the entity-body"
uint64_t
etag_len
=
etag_to_end
.
find
(
"
\r
"
);
...
...
@@ -413,8 +413,8 @@ const char *PartPutS3Object(const char *host, const char *bucket, const char *ob
bool
CompleteMultiPutS3
(
const
char
*
host
,
const
char
*
bucket
,
const
char
*
obj_name
,
const
char
*
upload_id
,
const
char
**
etag_array
,
uint64_t
count
,
const
S3Credential
&
cred
)
{
st
d
::
st
ringstream
url
;
st
d
::
st
ringstream
path_with_query
;
stringstream
url
;
stringstream
path_with_query
;
XMLInfo
xml
;
xml
.
ctxt
=
NULL
;
...
...
@@ -452,7 +452,7 @@ bool CompleteMultiPutS3(const char *host, const char *bucket, const char *obj_na
// <ETag>"acbd18db4cc2f85cedef654fccc4a4d8"</ETag>
// </Part>
// </CompleteMultipartUpload>
st
d
::
st
ringstream
body
;
stringstream
body
;
body
<<
"<CompleteMultipartUpload>
\n
"
;
for
(
uint64_t
i
=
0
;
i
<
count
;
++
i
)
{
...
...
gpAux/extensions/gps3ext/src/s3utils.cpp
浏览文件 @
c962ef2c
...
...
@@ -226,7 +226,7 @@ bool Config::Scan(const string &sec, const string &key, const char *scanfmt, voi
return
ini_sget
(
this
->
_conf
,
sec
.
c_str
(),
key
.
c_str
(),
scanfmt
,
dst
);
}
bool
to_bool
(
st
d
::
st
ring
str
)
{
bool
to_bool
(
string
str
)
{
std
::
transform
(
str
.
begin
(),
str
.
end
(),
str
.
begin
(),
::
tolower
);
if
((
str
==
"yes"
)
||
(
str
==
"true"
)
||
(
str
==
"y"
)
||
(
str
==
"t"
)
||
(
str
==
"1"
))
{
return
true
;
...
...
@@ -274,7 +274,7 @@ const char uri_mapping[256] = {
/* F */
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
/* */
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
};
// alpha, num and - _ . ~ are reserved(RFC 3986).
// alpha, num
bers
and - _ . ~ are reserved(RFC 3986).
const
char
uri_reserved
[
256
]
=
{
/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */
/* 0 */
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
...
...
@@ -297,7 +297,7 @@ const char uri_reserved[256] = {
/* E */
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
/* F */
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
st
d
::
string
uri_encode
(
const
std
::
string
&
src
)
{
st
ring
uri_encode
(
const
string
&
src
)
{
const
unsigned
char
*
src_str
=
(
const
unsigned
char
*
)
src
.
c_str
();
const
int
src_len
=
src
.
length
();
...
...
@@ -319,12 +319,12 @@ std::string uri_encode(const std::string &src) {
src_str
++
;
}
st
d
::
st
ring
ret_str
((
char
*
)
sub_start
,
(
char
*
)
sub_end
);
string
ret_str
((
char
*
)
sub_start
,
(
char
*
)
sub_end
);
delete
[]
sub_start
;
return
ret_str
;
}
st
d
::
string
uri_decode
(
const
std
::
string
&
src
)
{
st
ring
uri_decode
(
const
string
&
src
)
{
const
unsigned
char
*
src_str
=
(
const
unsigned
char
*
)
src
.
c_str
();
const
int
src_len
=
src
.
length
();
...
...
@@ -353,7 +353,7 @@ std::string uri_decode(const std::string &src) {
while
(
src_str
<
src_end
)
*
sub_end
++
=
*
src_str
++
;
st
d
::
st
ring
ret_str
(
sub_start
,
sub_end
);
string
ret_str
(
sub_start
,
sub_end
);
delete
[]
sub_start
;
return
ret_str
;
}
...
...
gpAux/extensions/gps3ext/test/gpreader_test.cpp
浏览文件 @
c962ef2c
...
...
@@ -237,7 +237,7 @@ TEST_F(GPReaderTest, ReadFromEmptyURL) {
MockS3RESTfulService
mockRestfulService
;
MockGPReader
gpreader
(
url
,
&
mockRestfulService
);
// an exception should be throwed in
validat
eURL()
// an exception should be throwed in
pars
eURL()
// with message "'' is not valid"
ReaderParams
params
;
EXPECT_THROW
(
gpreader
.
open
(
params
),
std
::
runtime_error
);
...
...
@@ -249,7 +249,7 @@ TEST_F(GPReaderTest, ReadFromInvalidURL) {
MockS3RESTfulService
mockRestfulService
;
MockGPReader
gpreader
(
url
,
&
mockRestfulService
);
// an exception should be throwed in
validat
eURL()
// an exception should be throwed in
pars
eURL()
// with message "'s3://' is not valid,"
ReaderParams
params
;
EXPECT_THROW
(
gpreader
.
open
(
params
),
std
::
runtime_error
);
...
...
gpAux/extensions/gps3ext/test/s3bucket_reader_test.cpp
浏览文件 @
c962ef2c
...
...
@@ -66,70 +66,70 @@ TEST_F(S3BucketReaderTest, OpenThrowExceptionWhenS3InterfaceIsNULL) {
EXPECT_THROW
(
bucketReader
->
open
(
params
),
std
::
runtime_error
);
}
TEST_F
(
S3BucketReaderTest
,
Validat
eURL_normal
)
{
EXPECT_NO_THROW
(
this
->
bucketReader
->
validat
eURL
(
TEST_F
(
S3BucketReaderTest
,
Pars
eURL_normal
)
{
EXPECT_NO_THROW
(
this
->
bucketReader
->
pars
eURL
(
"s3://s3-us-west-2.amazonaws.com/s3test.pivotal.io/dataset1/normal"
));
EXPECT_EQ
(
"us-west-2"
,
this
->
bucketReader
->
getRegion
());
EXPECT_EQ
(
"s3test.pivotal.io"
,
this
->
bucketReader
->
getBucket
());
EXPECT_EQ
(
"dataset1/normal"
,
this
->
bucketReader
->
getPrefix
());
}
TEST_F
(
S3BucketReaderTest
,
Validat
eURL_NoPrefixAndSlash
)
{
TEST_F
(
S3BucketReaderTest
,
Pars
eURL_NoPrefixAndSlash
)
{
EXPECT_NO_THROW
(
this
->
bucketReader
->
validat
eURL
(
"s3://s3-us-west-2.amazonaws.com/s3test.pivotal.io"
));
this
->
bucketReader
->
pars
eURL
(
"s3://s3-us-west-2.amazonaws.com/s3test.pivotal.io"
));
EXPECT_EQ
(
"s3test.pivotal.io"
,
this
->
bucketReader
->
getBucket
());
EXPECT_EQ
(
""
,
this
->
bucketReader
->
getPrefix
());
}
TEST_F
(
S3BucketReaderTest
,
Validat
eURL_NoPrefix
)
{
TEST_F
(
S3BucketReaderTest
,
Pars
eURL_NoPrefix
)
{
EXPECT_NO_THROW
(
this
->
bucketReader
->
validat
eURL
(
"s3://s3-us-west-2.amazonaws.com/s3test.pivotal.io/"
));
this
->
bucketReader
->
pars
eURL
(
"s3://s3-us-west-2.amazonaws.com/s3test.pivotal.io/"
));
EXPECT_EQ
(
"s3test.pivotal.io"
,
this
->
bucketReader
->
getBucket
());
EXPECT_EQ
(
""
,
this
->
bucketReader
->
getPrefix
());
}
TEST_F
(
S3BucketReaderTest
,
Validat
eURL_default
)
{
TEST_F
(
S3BucketReaderTest
,
Pars
eURL_default
)
{
EXPECT_NO_THROW
(
this
->
bucketReader
->
validat
eURL
(
"s3://s3.amazonaws.com/s3test.pivotal.io/dataset1/normal"
));
this
->
bucketReader
->
pars
eURL
(
"s3://s3.amazonaws.com/s3test.pivotal.io/dataset1/normal"
));
EXPECT_EQ
(
"external-1"
,
this
->
bucketReader
->
getRegion
());
EXPECT_EQ
(
"s3test.pivotal.io"
,
this
->
bucketReader
->
getBucket
());
EXPECT_EQ
(
"dataset1/normal"
,
this
->
bucketReader
->
getPrefix
());
}
TEST_F
(
S3BucketReaderTest
,
Validat
eURL_useast1
)
{
EXPECT_NO_THROW
(
this
->
bucketReader
->
validat
eURL
(
TEST_F
(
S3BucketReaderTest
,
Pars
eURL_useast1
)
{
EXPECT_NO_THROW
(
this
->
bucketReader
->
pars
eURL
(
"s3://s3-us-east-1.amazonaws.com/s3test.pivotal.io/dataset1/normal"
));
EXPECT_EQ
(
"external-1"
,
this
->
bucketReader
->
getRegion
());
EXPECT_EQ
(
"s3test.pivotal.io"
,
this
->
bucketReader
->
getBucket
());
EXPECT_EQ
(
"dataset1/normal"
,
this
->
bucketReader
->
getPrefix
());
}
TEST_F
(
S3BucketReaderTest
,
Validat
eURL_eucentral1
)
{
EXPECT_NO_THROW
(
this
->
bucketReader
->
validat
eURL
(
TEST_F
(
S3BucketReaderTest
,
Pars
eURL_eucentral1
)
{
EXPECT_NO_THROW
(
this
->
bucketReader
->
pars
eURL
(
"s3://s3.eu-central-1.amazonaws.com/s3test.pivotal.io/dataset1/normal"
));
EXPECT_EQ
(
"eu-central-1"
,
this
->
bucketReader
->
getRegion
());
EXPECT_EQ
(
"s3test.pivotal.io"
,
this
->
bucketReader
->
getBucket
());
EXPECT_EQ
(
"dataset1/normal"
,
this
->
bucketReader
->
getPrefix
());
}
TEST_F
(
S3BucketReaderTest
,
Validat
eURL_eucentral11
)
{
EXPECT_NO_THROW
(
this
->
bucketReader
->
validat
eURL
(
TEST_F
(
S3BucketReaderTest
,
Pars
eURL_eucentral11
)
{
EXPECT_NO_THROW
(
this
->
bucketReader
->
pars
eURL
(
"s3://s3-eu-central-1.amazonaws.com/s3test.pivotal.io/dataset1/normal"
));
EXPECT_EQ
(
"eu-central-1"
,
this
->
bucketReader
->
getRegion
());
EXPECT_EQ
(
"s3test.pivotal.io"
,
this
->
bucketReader
->
getBucket
());
EXPECT_EQ
(
"dataset1/normal"
,
this
->
bucketReader
->
getPrefix
());
}
TEST_F
(
S3BucketReaderTest
,
Validat
eURL_apnortheast2
)
{
EXPECT_NO_THROW
(
this
->
bucketReader
->
validat
eURL
(
TEST_F
(
S3BucketReaderTest
,
Pars
eURL_apnortheast2
)
{
EXPECT_NO_THROW
(
this
->
bucketReader
->
pars
eURL
(
"s3://s3.ap-northeast-2.amazonaws.com/s3test.pivotal.io/dataset1/normal"
));
EXPECT_EQ
(
"ap-northeast-2"
,
this
->
bucketReader
->
getRegion
());
EXPECT_EQ
(
"s3test.pivotal.io"
,
this
->
bucketReader
->
getBucket
());
EXPECT_EQ
(
"dataset1/normal"
,
this
->
bucketReader
->
getPrefix
());
}
TEST_F
(
S3BucketReaderTest
,
Validat
eURL_apnortheast21
)
{
EXPECT_NO_THROW
(
this
->
bucketReader
->
validat
eURL
(
TEST_F
(
S3BucketReaderTest
,
Pars
eURL_apnortheast21
)
{
EXPECT_NO_THROW
(
this
->
bucketReader
->
pars
eURL
(
"s3://s3-ap-northeast-2.amazonaws.com/s3test.pivotal.io/dataset1/normal"
));
EXPECT_EQ
(
"ap-northeast-2"
,
this
->
bucketReader
->
getRegion
());
EXPECT_EQ
(
"s3test.pivotal.io"
,
this
->
bucketReader
->
getBucket
());
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录