Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
kvdb
rocksdb
提交
8279d419
R
rocksdb
项目概览
kvdb
/
rocksdb
12 个月 前同步成功
通知
0
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rocksdb
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
8279d419
编写于
7月 23, 2015
作者:
S
Siying Dong
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #667 from yuslepukhin/fix_now_microsec_win
Fix WinEnv::NowMicros
上级
82f148ef
555ca3e7
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
30 addition
and
12 deletion
+30
-12
port/win/env_win.cc
port/win/env_win.cc
+10
-3
util/auto_roll_logger.cc
util/auto_roll_logger.cc
+1
-1
util/auto_roll_logger_test.cc
util/auto_roll_logger_test.cc
+19
-8
未找到文件。
port/win/env_win.cc
浏览文件 @
8279d419
...
...
@@ -1976,9 +1976,16 @@ class WinEnv : public Env {
}
virtual
uint64_t
NowMicros
()
override
{
using
namespace
std
::
chrono
;
return
duration_cast
<
microseconds
>
(
system_clock
::
now
().
time_since_epoch
())
.
count
();
// all std::chrono clocks on windows have the same resolution that is only
// On Windows 8 and Windows 2012 Server
// GetSystemTimePreciseAsFileTime(¤t_time) can be used
LARGE_INTEGER
li
;
QueryPerformanceCounter
(
&
li
);
// Convert to nanoseconds first to avoid loss of precision
// and divide by frequency
li
.
QuadPart
*=
std
::
micro
::
den
;
li
.
QuadPart
/=
perf_counter_frequency_
;
return
li
.
QuadPart
;
}
virtual
uint64_t
NowNanos
()
override
{
...
...
util/auto_roll_logger.cc
浏览文件 @
8279d419
...
...
@@ -91,7 +91,7 @@ void AutoRollLogger::Logv(const char* format, va_list ap) {
void
AutoRollLogger
::
WriteHeaderInfo
()
{
mutex_
.
AssertHeld
();
for
(
auto
header
:
headers_
)
{
for
(
auto
&
header
:
headers_
)
{
LogInternal
(
"%s"
,
header
.
c_str
());
}
}
...
...
util/auto_roll_logger_test.cc
浏览文件 @
8279d419
...
...
@@ -23,7 +23,17 @@ namespace rocksdb {
class
AutoRollLoggerTest
:
public
testing
::
Test
{
public:
static
void
InitTestDb
()
{
string
deleteCmd
=
"rm -rf "
+
kTestDir
;
#ifdef OS_WIN
// Replace all slashes in the path so windows CompSpec does not
// become confused
std
::
string
testDir
(
kTestDir
);
std
::
replace_if
(
testDir
.
begin
(),
testDir
.
end
(),
[](
char
ch
)
{
return
ch
==
'/'
;
},
'\\'
);
std
::
string
deleteCmd
=
"if exist "
+
testDir
+
" rd /s /q "
+
testDir
;
#else
std
::
string
deleteCmd
=
"rm -rf "
+
kTestDir
;
#endif
ASSERT_TRUE
(
system
(
deleteCmd
.
c_str
())
==
0
);
Env
::
Default
()
->
CreateDir
(
kTestDir
);
}
...
...
@@ -296,17 +306,18 @@ TEST_F(AutoRollLoggerTest, InfoLogLevel) {
// Test the logger Header function for roll over logs
// We expect the new logs creates as roll over to carry the headers specified
static
list
<
string
>
GetOldFileNames
(
const
string
&
path
)
{
static
std
::
vector
<
string
>
GetOldFileNames
(
const
string
&
path
)
{
std
::
vector
<
string
>
ret
;
const
string
dirname
=
path
.
substr
(
/*start=*/
0
,
path
.
find_last_of
(
"/"
));
const
string
fname
=
path
.
substr
(
path
.
find_last_of
(
"/"
)
+
1
);
vector
<
string
>
children
;
std
::
vector
<
string
>
children
;
Env
::
Default
()
->
GetChildren
(
dirname
,
&
children
);
// We know that the old log files are named [path]<something>
// Return all entities that match the pattern
list
<
string
>
ret
;
for
(
auto
child
:
children
)
{
for
(
auto
&
child
:
children
)
{
if
(
fname
!=
child
&&
child
.
find
(
fname
)
==
0
)
{
ret
.
push_back
(
dirname
+
"/"
+
child
);
}
...
...
@@ -360,7 +371,7 @@ TEST_F(AutoRollLoggerTest, LogHeaderTest) {
}
}
const
string
&
newfname
=
logger
.
TEST_log_fname
().
c_str
();
const
string
newfname
=
logger
.
TEST_log_fname
();
// Log enough data to cause a roll over
int
i
=
0
;
...
...
@@ -376,11 +387,11 @@ TEST_F(AutoRollLoggerTest, LogHeaderTest) {
// Flush the log for the latest file
LogFlush
(
&
logger
);
const
list
<
string
>
oldfiles
=
GetOldFileNames
(
newfname
);
const
auto
oldfiles
=
GetOldFileNames
(
newfname
);
ASSERT_EQ
(
oldfiles
.
size
(),
(
size_t
)
2
);
for
(
auto
oldfname
:
oldfiles
)
{
for
(
auto
&
oldfname
:
oldfiles
)
{
// verify that the files rolled over
ASSERT_NE
(
oldfname
,
newfname
);
// verify that the old log contains all the header logs
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录