Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
a5c44d30
V
vscode
项目概览
掘金者说
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
a5c44d30
编写于
5月 06, 2016
作者:
J
Johannes Rieken
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add tests for additional properties in AI appender
上级
289370f2
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
52 addition
and
44 deletion
+52
-44
src/vs/platform/telemetry/node/appInsightsAppender.ts
src/vs/platform/telemetry/node/appInsightsAppender.ts
+13
-20
src/vs/platform/telemetry/test/node/appInsightsAppender.test.ts
.../platform/telemetry/test/node/appInsightsAppender.test.ts
+38
-23
src/vs/workbench/electron-browser/shell.ts
src/vs/workbench/electron-browser/shell.ts
+1
-1
未找到文件。
src/vs/platform/telemetry/node/appInsightsAppender.ts
浏览文件 @
a5c44d30
...
...
@@ -7,12 +7,11 @@
import
errors
=
require
(
'
vs/base/common/errors
'
);
import
{
IStorageService
}
from
'
vs/platform/storage/common/storage
'
;
import
{
ITelemetryAppender
}
from
'
vs/platform/telemetry/common/telemetry
'
;
import
{
IEnvironment
}
from
'
vs/platform/workspace/common/workspace
'
;
import
{
AIAdapter
,
IAIAdapter
}
from
'
vs/base/node/aiAdapter
'
;
import
winreg
=
require
(
'
winreg
'
);
import
os
=
require
(
'
os
'
);
namespace
StorageKeys
{
export
namespace
StorageKeys
{
export
const
sqmUserId
:
string
=
'
telemetry.sqm.userId
'
;
export
const
sqmMachineId
:
string
=
'
telemetry.sqm.machineId
'
;
export
const
lastSessionDate
:
string
=
'
telemetry.lastSessionDate
'
;
...
...
@@ -21,8 +20,7 @@ namespace StorageKeys {
export
class
AppInsightsAppender
implements
ITelemetryAppender
{
public
static
EVENT_NAME_PREFIX
:
string
=
'
monacoworkbench
'
;
private
static
EVENT_NAME_PREFIX
:
string
=
'
monacoworkbench
'
;
private
static
SQM_KEY
:
string
=
'
\\
Software
\\
Microsoft
\\
SQMClient
'
;
private
storageService
:
IStorageService
;
...
...
@@ -33,32 +31,27 @@ export class AppInsightsAppender implements ITelemetryAppender {
constructor
(
@
IStorageService
storageService
:
IStorageService
,
env
:
IEnvironment
,
_testing_client
?:
any
config
:
{
key
:
string
;
asimovKey
:
string
}
,
_testing_client
?:
IAIAdapter
)
{
this
.
commonProperties
=
{};
this
.
commonMetrics
=
{};
this
.
storageService
=
storageService
;
let
key
=
env
.
aiConfig
&&
env
.
aiConfig
.
key
;
let
asimovKey
=
env
.
aiConfig
&&
env
.
aiConfig
.
asimovKey
;
// for test
let
{
key
,
asimovKey
}
=
config
;
if
(
_testing_client
)
{
// for test
this
.
appInsights
=
_testing_client
;
if
(
asimovKey
)
{
this
.
appInsightsVortex
=
_testing_client
;
}
return
;
}
if
(
key
)
{
this
.
appInsights
=
new
AIAdapter
(
AppInsightsAppender
.
EVENT_NAME_PREFIX
,
undefined
,
key
);
}
if
(
asimovKey
)
{
this
.
appInsightsVortex
=
new
AIAdapter
(
AppInsightsAppender
.
EVENT_NAME_PREFIX
,
undefined
,
asimovKey
);
}
else
{
if
(
key
)
{
this
.
appInsights
=
new
AIAdapter
(
AppInsightsAppender
.
EVENT_NAME_PREFIX
,
undefined
,
key
);
}
if
(
asimovKey
)
{
this
.
appInsightsVortex
=
new
AIAdapter
(
AppInsightsAppender
.
EVENT_NAME_PREFIX
,
undefined
,
asimovKey
);
}
}
this
.
loadAddtionaProperties
();
...
...
src/vs/platform/telemetry/test/node/appInsightsAppender.test.ts
浏览文件 @
a5c44d30
...
...
@@ -6,7 +6,8 @@
import
*
as
assert
from
'
assert
'
;
import
{
IAIAdapter
}
from
'
vs/base/node/aiAdapter
'
;
import
{
AppInsightsAppender
}
from
'
vs/platform/telemetry/node/appInsightsAppender
'
;
import
{
AppInsightsAppender
,
StorageKeys
}
from
'
vs/platform/telemetry/node/appInsightsAppender
'
;
import
{
TestStorageService
}
from
'
vs/workbench/test/browser/servicesTestUtils
'
;
interface
IAppInsightsEvent
{
eventName
:
string
;
...
...
@@ -19,7 +20,7 @@ class AIAdapterMock implements IAIAdapter {
public
IsTrackingPageView
:
boolean
=
false
;
public
exceptions
:
any
[]
=
[];
constructor
(
private
prefix
:
string
,
private
eventPrefix
:
string
,
client
?:
any
)
{
constructor
(
private
prefix
:
string
)
{
}
public
log
(
eventName
:
string
,
data
?:
any
):
void
{
...
...
@@ -37,27 +38,13 @@ class AIAdapterMock implements IAIAdapter {
}
}
let
envKeyNoAsimov
:
any
=
{
aiConfig
:
{
key
:
'
123
'
,
asimovKey
:
undefined
}
};
let
envKeyAsimov
:
any
=
{
aiConfig
:
{
key
:
'
123
'
,
asimovKey
:
'
AIF-123
'
}
};
suite
(
'
Telemetry - AppInsightsTelemetryAppender
'
,
()
=>
{
var
appInsightsMock
:
AIAdapterMock
;
var
appender
:
AppInsightsAppender
;
setup
(()
=>
{
appInsightsMock
=
new
AIAdapterMock
(
AppInsightsAppender
.
EVENT_NAME_PREFIX
,
AppInsightsAppender
.
EVENT_NAME_PREFIX
);
appender
=
new
AppInsightsAppender
(
n
ull
,
envKeyNoAsimov
,
appInsightsMock
);
appInsightsMock
=
new
AIAdapterMock
(
'
testPrefix
'
);
appender
=
new
AppInsightsAppender
(
n
ew
TestStorageService
(),
{
key
:
'
123
'
,
asimovKey
:
undefined
}
,
appInsightsMock
);
});
teardown
(()
=>
{
...
...
@@ -68,7 +55,35 @@ suite('Telemetry - AppInsightsTelemetryAppender', () => {
appender
.
log
(
'
testEvent
'
);
assert
.
equal
(
appInsightsMock
.
events
.
length
,
1
);
assert
.
equal
(
appInsightsMock
.
events
[
0
].
eventName
,
AppInsightsAppender
.
EVENT_NAME_PREFIX
+
'
/testEvent
'
);
assert
.
equal
(
appInsightsMock
.
events
[
0
].
eventName
,
'
testPrefix/testEvent
'
);
});
test
(
'
test additional properties
'
,
()
=>
{
appender
.
log
(
'
testEvent
'
);
assert
.
equal
(
appInsightsMock
.
events
.
length
,
1
);
let
[
first
]
=
appInsightsMock
.
events
;
assert
.
equal
(
first
.
eventName
,
'
testPrefix/testEvent
'
);
assert
.
ok
(
'
common.osVersion
'
in
first
.
data
);
assert
.
ok
(
'
common.isNewSession
'
in
first
.
data
);
assert
.
ok
(
'
common.firstSessionDate
'
in
first
.
data
);
assert
.
ok
(
!
(
'
common.lastSessionDate
'
in
first
.
data
));
// conditional, see below
// assert.ok('common.version.shell' in first.data); // only when running on electron
// assert.ok('common.version.renderer' in first.data);
if
(
process
.
platform
===
'
win32
'
)
{
// SQM only on windows
assert
.
ok
(
'
common.sqm.userid
'
in
first
.
data
);
assert
.
ok
(
'
common.sqm.machineid
'
in
first
.
data
);
}
});
test
(
'
test additional properties with storage data
'
,
()
=>
{
const
storage
=
new
TestStorageService
();
storage
.
store
(
StorageKeys
.
lastSessionDate
,
'
somevalue
'
);
let
appender
=
new
AppInsightsAppender
(
storage
,
{
key
:
'
123
'
,
asimovKey
:
undefined
},
appInsightsMock
);
appender
.
log
(
'
testEvent
'
);
let
[
first
]
=
appInsightsMock
.
events
;
assert
.
ok
(
'
common.lastSessionDate
'
in
first
.
data
);
// conditional
appender
.
dispose
();
});
test
(
'
Event with data
'
,
()
=>
{
...
...
@@ -79,7 +94,7 @@ suite('Telemetry - AppInsightsTelemetryAppender', () => {
});
assert
.
equal
(
appInsightsMock
.
events
.
length
,
1
);
assert
.
equal
(
appInsightsMock
.
events
[
0
].
eventName
,
AppInsightsAppender
.
EVENT_NAME_PREFIX
+
'
/testEvent
'
);
assert
.
equal
(
appInsightsMock
.
events
[
0
].
eventName
,
'
testPrefix
/testEvent
'
);
assert
.
equal
(
appInsightsMock
.
events
[
0
].
data
[
'
title
'
],
'
some title
'
);
assert
.
equal
(
appInsightsMock
.
events
[
0
].
data
[
'
width
'
],
100
);
...
...
@@ -88,14 +103,14 @@ suite('Telemetry - AppInsightsTelemetryAppender', () => {
});
test
(
'
Test asimov
'
,
()
=>
{
appender
=
new
AppInsightsAppender
(
n
ull
,
envKeyAsimov
,
appInsightsMock
);
appender
=
new
AppInsightsAppender
(
n
ew
TestStorageService
(),
{
key
:
'
123
'
,
asimovKey
:
'
AIF-123
'
}
,
appInsightsMock
);
appender
.
log
(
'
testEvent
'
);
assert
.
equal
(
appInsightsMock
.
events
.
length
,
2
);
assert
.
equal
(
appInsightsMock
.
events
[
0
].
eventName
,
AppInsightsAppender
.
EVENT_NAME_PREFIX
+
'
/testEvent
'
);
assert
.
equal
(
appInsightsMock
.
events
[
0
].
eventName
,
'
testPrefix
/testEvent
'
);
// test vortex
assert
.
equal
(
appInsightsMock
.
events
[
1
].
eventName
,
AppInsightsAppender
.
EVENT_NAME_PREFIX
+
'
/testEvent
'
);
assert
.
equal
(
appInsightsMock
.
events
[
1
].
eventName
,
'
testPrefix
/testEvent
'
);
});
});
\ No newline at end of file
src/vs/workbench/electron-browser/shell.ts
浏览文件 @
a5c44d30
...
...
@@ -209,7 +209,7 @@ export class WorkbenchShell {
extensionsRoot
:
this
.
configuration
.
env
.
userExtensionsHome
,
version
:
this
.
configuration
.
env
.
version
,
commitHash
:
this
.
configuration
.
env
.
commitHash
,
appender
:
[
new
AppInsightsAppender
(
this
.
storageService
,
this
.
configuration
.
env
)]
appender
:
[
new
AppInsightsAppender
(
this
.
storageService
,
this
.
configuration
.
env
.
aiConfig
)]
});
}
else
{
this
.
telemetryService
=
NullTelemetryService
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录