Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
d99d89dc
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,发现更多精彩内容 >>
提交
d99d89dc
编写于
5月 06, 2016
作者:
J
Johannes Rieken
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
make appenders a ctor argument, first step towards oop appender, #1000
上级
6d0aa3bc
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
53 addition
and
221 deletion
+53
-221
src/vs/platform/telemetry/browser/telemetryService.ts
src/vs/platform/telemetry/browser/telemetryService.ts
+4
-15
src/vs/platform/telemetry/common/telemetry.ts
src/vs/platform/telemetry/common/telemetry.ts
+1
-29
src/vs/platform/telemetry/node/appInsightsAppender.ts
src/vs/platform/telemetry/node/appInsightsAppender.ts
+9
-13
src/vs/platform/telemetry/test/node/appInsightsAppender.test.ts
.../platform/telemetry/test/node/appInsightsAppender.test.ts
+10
-10
src/vs/platform/telemetry/test/node/telemetryService.test.ts
src/vs/platform/telemetry/test/node/telemetryService.test.ts
+25
-137
src/vs/workbench/browser/workbench.ts
src/vs/workbench/browser/workbench.ts
+1
-3
src/vs/workbench/electron-browser/shell.ts
src/vs/workbench/electron-browser/shell.ts
+3
-1
src/vs/workbench/parts/telemetry/node/appInsights.telemetry.contribution.ts
...arts/telemetry/node/appInsights.telemetry.contribution.ts
+0
-11
src/vs/workbench/workbench.main.js
src/vs/workbench/workbench.main.js
+0
-2
未找到文件。
src/vs/platform/telemetry/browser/telemetryService.ts
浏览文件 @
d99d89dc
...
...
@@ -17,6 +17,7 @@ import {TimeKeeper, ITimerEvent} from 'vs/base/common/timer';
import
{
withDefaults
,
cloneAndChange
}
from
'
vs/base/common/objects
'
;
export
interface
ITelemetryServiceConfig
{
appender
:
ITelemetryAppender
[];
userOptIn
?:
boolean
;
enableHardIdle
?:
boolean
;
enableSoftIdle
?:
boolean
;
...
...
@@ -40,7 +41,6 @@ export class TelemetryService implements ITelemetryService {
protected
_telemetryInfo
:
ITelemetryInfo
;
protected
_configuration
:
ITelemetryServiceConfig
;
protected
_appenders
:
ITelemetryAppender
[]
=
[];
protected
_disposables
:
IDisposable
[]
=
[];
private
_timeKeeper
:
TimeKeeper
;
...
...
@@ -54,6 +54,7 @@ export class TelemetryService implements ITelemetryService {
constructor
(
config
?:
ITelemetryServiceConfig
)
{
this
.
_configuration
=
withDefaults
(
config
,
<
ITelemetryServiceConfig
>
{
appender
:
[],
cleanupPatterns
:
[],
sessionID
:
uuid
.
generateUuid
()
+
Date
.
now
(),
enableHardIdle
:
true
,
...
...
@@ -131,7 +132,7 @@ export class TelemetryService implements ITelemetryService {
public
dispose
():
void
{
this
.
_disposables
=
dispose
(
this
.
_disposables
);
for
(
let
appender
of
this
.
_
appenders
)
{
for
(
let
appender
of
this
.
_
configuration
.
appender
)
{
appender
.
dispose
();
}
}
...
...
@@ -185,7 +186,7 @@ export class TelemetryService implements ITelemetryService {
}
});
for
(
let
appender
of
this
.
_
appenders
)
{
for
(
let
appender
of
this
.
_
configuration
.
appender
)
{
appender
.
log
(
eventName
,
data
);
}
}
...
...
@@ -200,17 +201,5 @@ export class TelemetryService implements ITelemetryService {
return
stack
;
}
public
addTelemetryAppender
(
appender
:
ITelemetryAppender
):
IDisposable
{
this
.
_appenders
.
push
(
appender
);
return
{
dispose
:
()
=>
{
let
index
=
this
.
_appenders
.
indexOf
(
appender
);
if
(
index
>
-
1
)
{
this
.
_appenders
.
splice
(
index
,
1
);
}
}
};
}
}
src/vs/platform/telemetry/common/telemetry.ts
浏览文件 @
d99d89dc
...
...
@@ -7,7 +7,7 @@
import
{
TPromise
}
from
'
vs/base/common/winjs.base
'
;
import
{
IDisposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
ITimerEvent
,
nullEvent
}
from
'
vs/base/common/timer
'
;
import
{
createDecorator
,
ServiceIdentifier
,
IInstantiationService
,
ServicesAccessor
,
IConstructorSignature0
}
from
'
vs/platform/instantiation/common/instantiation
'
;
import
{
createDecorator
,
ServiceIdentifier
}
from
'
vs/platform/instantiation/common/instantiation
'
;
export
const
ITelemetryService
=
createDecorator
<
ITelemetryService
>
(
'
telemetryService
'
);
...
...
@@ -34,40 +34,12 @@ export interface ITelemetryService {
getTelemetryInfo
():
TPromise
<
ITelemetryInfo
>
;
isOptedIn
:
boolean
;
addTelemetryAppender
(
appender
:
ITelemetryAppender
):
IDisposable
;
}
export
namespace
Extenstions
{
let
_telemetryAppenderCtors
:
IConstructorSignature0
<
ITelemetryAppender
>
[]
=
[];
export
const
TelemetryAppenders
=
{
activate
(
accessor
:
ServicesAccessor
):
void
{
const
telemetryService
=
accessor
.
get
(
ITelemetryService
);
const
instantiationService
=
accessor
.
get
(
IInstantiationService
);
for
(
let
ctor
of
_telemetryAppenderCtors
)
{
const
instance
=
instantiationService
.
createInstance
(
ctor
);
telemetryService
.
addTelemetryAppender
(
instance
);
}
// can only be done once
_telemetryAppenderCtors
=
undefined
;
},
registerTelemetryAppenderDescriptor
(
ctor
:
IConstructorSignature0
<
ITelemetryAppender
>
):
void
{
_telemetryAppenderCtors
.
push
(
ctor
);
}
};
};
export
interface
ITelemetryAppendersRegistry
{
activate
(
instantiationService
:
IInstantiationService
):
void
;
}
export
const
NullTelemetryService
:
ITelemetryService
=
{
serviceId
:
undefined
,
timedPublicLog
(
name
:
string
,
data
?:
any
):
ITimerEvent
{
return
nullEvent
;
},
publicLog
(
eventName
:
string
,
data
?:
any
):
void
{
},
addTelemetryAppender
(
appender
):
IDisposable
{
return
{
dispose
()
{
}
};
},
isOptedIn
:
true
,
getTelemetryInfo
():
TPromise
<
ITelemetryInfo
>
{
return
TPromise
.
as
({
...
...
src/vs/
workbench/parts/telemetry/node/nodeAppInsightsTelemetry
Appender.ts
→
src/vs/
platform/telemetry/node/appInsights
Appender.ts
浏览文件 @
d99d89dc
...
...
@@ -4,14 +4,11 @@
*--------------------------------------------------------------------------------------------*/
'
use strict
'
;
/* tslint:disable:semicolon */
import
errors
=
require
(
'
vs/base/common/errors
'
);
import
{
IStorageService
}
from
'
vs/platform/storage/common/storage
'
;
import
{
ITelemetryAppender
}
from
'
vs/platform/telemetry/common/telemetry
'
;
import
{
IWorkspaceContextService
}
from
'
vs/platform/workspace/common/workspace
'
;
import
{
AIAdapter
,
IAIAdapter
}
from
'
vs/base/node/aiAdapter
'
;
import
winreg
=
require
(
'
winreg
'
);
import
os
=
require
(
'
os
'
);
...
...
@@ -22,7 +19,7 @@ class StorageKeys {
public
static
firstSessionDate
:
string
=
'
telemetry.firstSessionDate
'
;
}
export
class
NodeAppInsightsTelemetry
Appender
implements
ITelemetryAppender
{
export
class
AppInsights
Appender
implements
ITelemetryAppender
{
public
static
EVENT_NAME_PREFIX
:
string
=
'
monacoworkbench
'
;
...
...
@@ -40,8 +37,7 @@ export class NodeAppInsightsTelemetryAppender implements ITelemetryAppender {
constructor
(
@
IStorageService
storageService
:
IStorageService
,
@
IWorkspaceContextService
contextService
:
IWorkspaceContextService
,
/* for test only */
client
:
any
_testing_client
?:
any
)
{
this
.
commonProperties
=
{};
this
.
commonMetrics
=
{};
...
...
@@ -54,21 +50,21 @@ export class NodeAppInsightsTelemetryAppender implements ITelemetryAppender {
let
asimovKey
=
config
?
config
.
asimovKey
:
null
;
// for test
if
(
client
)
{
this
.
appInsights
=
client
;
if
(
_testing_
client
)
{
this
.
appInsights
=
_testing_
client
;
if
(
asimovKey
)
{
this
.
appInsightsVortex
=
client
;
this
.
appInsightsVortex
=
_testing_
client
;
}
return
;
}
if
(
key
)
{
this
.
appInsights
=
new
AIAdapter
(
key
,
NodeAppInsightsTelemetry
Appender
.
EVENT_NAME_PREFIX
);
this
.
appInsights
=
new
AIAdapter
(
key
,
AppInsights
Appender
.
EVENT_NAME_PREFIX
);
}
if
(
asimovKey
)
{
this
.
appInsightsVortex
=
new
AIAdapter
(
asimovKey
,
NodeAppInsightsTelemetry
Appender
.
EVENT_NAME_PREFIX
);
this
.
appInsightsVortex
=
new
AIAdapter
(
asimovKey
,
AppInsights
Appender
.
EVENT_NAME_PREFIX
);
}
this
.
loadAddtionaProperties
();
...
...
@@ -87,7 +83,7 @@ export class NodeAppInsightsTelemetryAppender implements ITelemetryAppender {
if
(
sqmUserId
)
{
this
.
commonProperties
[
'
sqm.userid
'
]
=
sqmUserId
;
}
else
{
this
.
getWinRegKeyData
(
NodeAppInsightsTelemetry
Appender
.
SQM_KEY
,
'
UserId
'
,
winreg
.
HKCU
,
(
error
,
result
:
string
)
=>
{
this
.
getWinRegKeyData
(
AppInsights
Appender
.
SQM_KEY
,
'
UserId
'
,
winreg
.
HKCU
,
(
error
,
result
:
string
)
=>
{
if
(
!
error
&&
result
)
{
this
.
commonProperties
[
'
sqm.userid
'
]
=
result
;
this
.
storageService
.
store
(
StorageKeys
.
sqmUserId
,
result
);
...
...
@@ -100,7 +96,7 @@ export class NodeAppInsightsTelemetryAppender implements ITelemetryAppender {
this
.
commonProperties
[
'
sqm.machineid
'
]
=
sqmMachineId
;
}
else
{
this
.
getWinRegKeyData
(
NodeAppInsightsTelemetry
Appender
.
SQM_KEY
,
'
MachineId
'
,
winreg
.
HKLM
,(
error
,
result
)
=>
{
this
.
getWinRegKeyData
(
AppInsights
Appender
.
SQM_KEY
,
'
MachineId
'
,
winreg
.
HKLM
,(
error
,
result
)
=>
{
if
(
!
error
&&
result
)
{
this
.
commonProperties
[
'
sqm.machineid
'
]
=
result
;
this
.
storageService
.
store
(
StorageKeys
.
sqmMachineId
,
result
);
...
...
src/vs/
workbench/parts/telemetry/test/node/appInsightsTelemetry
Appender.test.ts
→
src/vs/
platform/telemetry/test/node/appInsights
Appender.test.ts
浏览文件 @
d99d89dc
...
...
@@ -6,7 +6,7 @@
import
*
as
assert
from
'
assert
'
;
import
{
IAIAdapter
}
from
'
vs/base/node/aiAdapter
'
;
import
{
NodeAppInsightsTelemetryAppender
}
from
'
vs/workbench/parts/telemetry/node/nodeAppInsightsTelemetry
Appender
'
;
import
{
AppInsightsAppender
}
from
'
vs/platform/telemetry/node/appInsights
Appender
'
;
interface
IAppInsightsEvent
{
eventName
:
string
;
...
...
@@ -49,17 +49,17 @@ class ContextServiceMock {
asimovKey
:
this
.
asimovKey
}
}
}
}
;
}
}
suite
(
'
Telemetry - AppInsightsTelemetryAppender
'
,
()
=>
{
var
appInsightsMock
:
AIAdapterMock
;
var
appender
:
NodeAppInsightsTelemetry
Appender
;
var
appender
:
AppInsights
Appender
;
setup
(()
=>
{
appInsightsMock
=
new
AIAdapterMock
(
NodeAppInsightsTelemetryAppender
.
EVENT_NAME_PREFIX
,
NodeAppInsightsTelemetry
Appender
.
EVENT_NAME_PREFIX
);
appender
=
new
NodeAppInsightsTelemetry
Appender
(
null
,
<
any
>
new
ContextServiceMock
(
'
123
'
),
appInsightsMock
);
appInsightsMock
=
new
AIAdapterMock
(
AppInsightsAppender
.
EVENT_NAME_PREFIX
,
AppInsights
Appender
.
EVENT_NAME_PREFIX
);
appender
=
new
AppInsights
Appender
(
null
,
<
any
>
new
ContextServiceMock
(
'
123
'
),
appInsightsMock
);
});
teardown
(()
=>
{
...
...
@@ -70,7 +70,7 @@ suite('Telemetry - AppInsightsTelemetryAppender', () => {
appender
.
log
(
'
testEvent
'
);
assert
.
equal
(
appInsightsMock
.
events
.
length
,
1
);
assert
.
equal
(
appInsightsMock
.
events
[
0
].
eventName
,
NodeAppInsightsTelemetry
Appender
.
EVENT_NAME_PREFIX
+
'
/testEvent
'
);
assert
.
equal
(
appInsightsMock
.
events
[
0
].
eventName
,
AppInsights
Appender
.
EVENT_NAME_PREFIX
+
'
/testEvent
'
);
});
test
(
'
Event with data
'
,
()
=>
{
...
...
@@ -81,7 +81,7 @@ suite('Telemetry - AppInsightsTelemetryAppender', () => {
});
assert
.
equal
(
appInsightsMock
.
events
.
length
,
1
);
assert
.
equal
(
appInsightsMock
.
events
[
0
].
eventName
,
NodeAppInsightsTelemetry
Appender
.
EVENT_NAME_PREFIX
+
'
/testEvent
'
);
assert
.
equal
(
appInsightsMock
.
events
[
0
].
eventName
,
AppInsights
Appender
.
EVENT_NAME_PREFIX
+
'
/testEvent
'
);
assert
.
equal
(
appInsightsMock
.
events
[
0
].
data
[
'
title
'
],
'
some title
'
);
assert
.
equal
(
appInsightsMock
.
events
[
0
].
data
[
'
width
'
],
100
);
...
...
@@ -90,14 +90,14 @@ suite('Telemetry - AppInsightsTelemetryAppender', () => {
});
test
(
'
Test asimov
'
,
()
=>
{
appender
=
new
NodeAppInsightsTelemetry
Appender
(
null
,
<
any
>
new
ContextServiceMock
(
'
123
'
,
'
AIF-123
'
),
appInsightsMock
);
appender
=
new
AppInsights
Appender
(
null
,
<
any
>
new
ContextServiceMock
(
'
123
'
,
'
AIF-123
'
),
appInsightsMock
);
appender
.
log
(
'
testEvent
'
);
assert
.
equal
(
appInsightsMock
.
events
.
length
,
2
);
assert
.
equal
(
appInsightsMock
.
events
[
0
].
eventName
,
NodeAppInsightsTelemetry
Appender
.
EVENT_NAME_PREFIX
+
'
/testEvent
'
);
assert
.
equal
(
appInsightsMock
.
events
[
0
].
eventName
,
AppInsights
Appender
.
EVENT_NAME_PREFIX
+
'
/testEvent
'
);
// test vortex
assert
.
equal
(
appInsightsMock
.
events
[
1
].
eventName
,
NodeAppInsightsTelemetry
Appender
.
EVENT_NAME_PREFIX
+
'
/testEvent
'
);
assert
.
equal
(
appInsightsMock
.
events
[
1
].
eventName
,
AppInsights
Appender
.
EVENT_NAME_PREFIX
+
'
/testEvent
'
);
});
});
\ No newline at end of file
src/vs/platform/telemetry/test/node/telemetryService.test.ts
浏览文件 @
d99d89dc
...
...
@@ -8,8 +8,6 @@ import * as assert from 'assert';
import
IdleMonitor
=
require
(
'
vs/base/browser/idleMonitor
'
);
import
{
TelemetryService
}
from
'
vs/platform/telemetry/browser/telemetryService
'
;
import
Telemetry
=
require
(
'
vs/platform/telemetry/common/telemetry
'
);
import
{
InstantiationService
}
from
'
vs/platform/instantiation/common/instantiationService
'
;
import
{
ServiceCollection
}
from
'
vs/platform/instantiation/common/serviceCollection
'
;
import
Errors
=
require
(
'
vs/base/common/errors
'
);
import
Timer
=
require
(
'
vs/base/common/timer
'
);
import
*
as
sinon
from
'
sinon
'
;
...
...
@@ -88,7 +86,7 @@ suite('TelemetryService', () => {
class
AppenderCountTelemetryService
extends
TelemetryService
{
getAppendersCount
()
{
return
this
.
_
appenders
.
length
;
return
this
.
_
configuration
.
appender
.
length
;
}
}
...
...
@@ -106,99 +104,9 @@ suite('TelemetryService', () => {
service
.
dispose
();
}));
test
(
'
Add appender
'
,
sinon
.
test
(
function
()
{
let
service
=
new
AppenderCountTelemetryService
();
assert
.
equal
(
service
.
getAppendersCount
(),
0
);
let
testAppender
=
new
TestTelemetryAppender
();
service
.
addTelemetryAppender
(
testAppender
);
assert
.
equal
(
service
.
getAppendersCount
(),
1
);
service
.
dispose
();
}));
test
(
'
Remove appender
'
,
sinon
.
test
(
function
()
{
let
service
=
new
AppenderCountTelemetryService
();
assert
.
equal
(
service
.
getAppendersCount
(),
0
);
let
testAppender
=
new
TestTelemetryAppender
();
let
registration
=
service
.
addTelemetryAppender
(
testAppender
);
assert
.
equal
(
service
.
getAppendersCount
(),
1
);
//report event
service
.
publicLog
(
'
testEvent
'
);
assert
.
equal
(
testAppender
.
getEventsCount
(),
1
);
//remove appender
registration
.
dispose
();
assert
.
equal
(
service
.
getAppendersCount
(),
0
);
//verify events not being sent
service
.
publicLog
(
'
testEvent2
'
);
assert
.
equal
(
testAppender
.
getEventsCount
(),
1
);
service
.
dispose
();
}));
test
(
'
Multiple appenders
'
,
sinon
.
test
(
function
()
{
let
service
=
new
AppenderCountTelemetryService
();
assert
.
equal
(
service
.
getAppendersCount
(),
0
);
let
testAppender1
=
new
TestTelemetryAppender
();
let
registrgation1
=
service
.
addTelemetryAppender
(
testAppender1
);
assert
.
equal
(
service
.
getAppendersCount
(),
1
);
//report event
service
.
publicLog
(
'
testEvent
'
);
assert
.
equal
(
testAppender1
.
getEventsCount
(),
1
);
// add second appender
let
testAppender2
=
new
TestTelemetryAppender
();
service
.
addTelemetryAppender
(
testAppender2
);
assert
.
equal
(
service
.
getAppendersCount
(),
2
);
//report event
service
.
publicLog
(
'
testEvent2
'
);
assert
.
equal
(
testAppender1
.
getEventsCount
(),
2
);
assert
.
equal
(
testAppender2
.
getEventsCount
(),
1
);
//remove appender 1
registrgation1
.
dispose
();
assert
.
equal
(
service
.
getAppendersCount
(),
1
);
//verify events not being sent to the removed appender
service
.
publicLog
(
'
testEvent3
'
);
assert
.
equal
(
testAppender1
.
getEventsCount
(),
2
);
assert
.
equal
(
testAppender2
.
getEventsCount
(),
2
);
service
.
dispose
();
}));
test
(
'
TelemetryAppendersRegistry, activate
'
,
function
()
{
Telemetry
.
Extenstions
.
TelemetryAppenders
.
registerTelemetryAppenderDescriptor
(
TestTelemetryAppender
);
let
callCount
=
0
;
let
telemetryService
:
Telemetry
.
ITelemetryService
=
<
any
>
{
addTelemetryAppender
(
appender
)
{
assert
.
ok
(
appender
);
callCount
+=
1
;
}
};
let
instantiationService
=
new
InstantiationService
(
new
ServiceCollection
([
Telemetry
.
ITelemetryService
,
telemetryService
]));
instantiationService
.
invokeFunction
(
Telemetry
.
Extenstions
.
TelemetryAppenders
.
activate
);
assert
.
equal
(
callCount
,
1
);
// registry is now active/read-only
assert
.
throws
(()
=>
Telemetry
.
Extenstions
.
TelemetryAppenders
.
registerTelemetryAppenderDescriptor
(
TestTelemetryAppender
));
assert
.
throws
(()
=>
instantiationService
.
invokeFunction
(
Telemetry
.
Extenstions
.
TelemetryAppenders
.
activate
));
});
test
(
'
Disposing
'
,
sinon
.
test
(
function
()
{
let
service
=
new
TelemetryService
();
let
testAppender
=
new
TestTelemetryAppender
();
service
.
addTelemetryAppender
(
testAppender
);
let
service
=
new
TelemetryService
({
appender
:
[
testAppender
]
}
);
service
.
publicLog
(
'
testPrivateEvent
'
);
assert
.
equal
(
testAppender
.
getEventsCount
(),
1
);
...
...
@@ -209,12 +117,11 @@ suite('TelemetryService', () => {
// event reporting
test
(
'
Simple event
'
,
sinon
.
test
(
function
()
{
let
service
=
new
TelemetryService
();
let
testAppender
=
new
TestTelemetryAppender
();
let
service
=
new
TelemetryService
({
appender
:
[
testAppender
]
});
return
service
.
getTelemetryInfo
().
then
(
info
=>
{
service
.
addTelemetryAppender
(
testAppender
);
service
.
publicLog
(
'
testEvent
'
);
assert
.
equal
(
testAppender
.
getEventsCount
(),
1
);
...
...
@@ -228,11 +135,10 @@ suite('TelemetryService', () => {
}));
test
(
'
Event with data
'
,
sinon
.
test
(
function
()
{
let
service
=
new
TelemetryService
();
let
testAppender
=
new
TestTelemetryAppender
();
let
service
=
new
TelemetryService
({
appender
:
[
testAppender
]
});
return
service
.
getTelemetryInfo
().
then
(
info
=>
{
service
.
addTelemetryAppender
(
testAppender
);
service
.
publicLog
(
'
testEvent
'
,
{
'
stringProp
'
:
'
property
'
,
...
...
@@ -260,9 +166,8 @@ suite('TelemetryService', () => {
test
(
'
Telemetry Timer events
'
,
sinon
.
test
(
function
()
{
Timer
.
ENABLE_TIMER
=
true
;
let
service
=
new
TelemetryService
();
let
testAppender
=
new
TestTelemetryAppender
();
service
.
addTelemetryAppender
(
testAppender
);
let
service
=
new
TelemetryService
({
appender
:
[
testAppender
]
}
);
let
t1
=
service
.
timedPublicLog
(
'
editorDance
'
);
this
.
clock
.
tick
(
20
);
...
...
@@ -293,9 +198,8 @@ suite('TelemetryService', () => {
}));
test
(
'
enableTelemetry on by default
'
,
sinon
.
test
(
function
()
{
let
service
=
new
TelemetryService
();
let
testAppender
=
new
TestTelemetryAppender
();
service
.
addTelemetryAppender
(
testAppender
);
let
service
=
new
TelemetryService
({
appender
:
[
testAppender
]
}
);
service
.
publicLog
(
'
testEvent
'
);
assert
.
equal
(
testAppender
.
getEventsCount
(),
1
);
...
...
@@ -310,9 +214,8 @@ suite('TelemetryService', () => {
Errors
.
setUnexpectedErrorHandler
(()
=>
{
});
try
{
let
service
=
new
TelemetryService
();
let
testAppender
=
new
TestTelemetryAppender
();
service
.
addTelemetryAppender
(
testAppender
);
let
service
=
new
TelemetryService
({
appender
:
[
testAppender
]
}
);
let
e
:
any
=
new
Error
(
'
This is a test.
'
);
...
...
@@ -365,9 +268,8 @@ suite('TelemetryService', () => {
test
(
'
Handle global errors
'
,
sinon
.
test
(
function
()
{
let
errorStub
=
this
.
stub
(
window
,
'
onerror
'
);
let
service
=
new
TelemetryService
();
let
testAppender
=
new
TestTelemetryAppender
();
service
.
addTelemetryAppender
(
testAppender
);
let
service
=
new
TelemetryService
({
appender
:
[
testAppender
]
}
);
let
testError
=
new
Error
(
'
test
'
);
(
<
any
>
window
.
onerror
)(
'
Error Message
'
,
'
file.js
'
,
2
,
42
,
testError
);
...
...
@@ -390,9 +292,8 @@ suite('TelemetryService', () => {
test
(
'
Uncaught Error Telemetry removes PII from filename
'
,
sinon
.
test
(
function
()
{
let
errorStub
=
this
.
stub
(
window
,
'
onerror
'
);
let
settings
=
new
ErrorTestingSettings
();
let
service
=
new
TelemetryService
();
let
testAppender
=
new
TestTelemetryAppender
();
service
.
addTelemetryAppender
(
testAppender
);
let
service
=
new
TelemetryService
({
appender
:
[
testAppender
]
}
);
let
dangerousFilenameError
:
any
=
new
Error
(
'
dangerousFilename
'
);
dangerousFilenameError
.
stack
=
settings
.
stack
;
...
...
@@ -419,9 +320,8 @@ suite('TelemetryService', () => {
Errors
.
setUnexpectedErrorHandler
(()
=>
{
});
try
{
let
settings
=
new
ErrorTestingSettings
();
let
service
=
new
TelemetryService
();
let
testAppender
=
new
TestTelemetryAppender
();
service
.
addTelemetryAppender
(
testAppender
);
let
service
=
new
TelemetryService
({
appender
:
[
testAppender
]
}
);
let
dangerousPathWithoutImportantInfoError
:
any
=
new
Error
(
settings
.
dangerousPathWithoutImportantInfo
);
dangerousPathWithoutImportantInfoError
.
stack
=
settings
.
stack
;
...
...
@@ -446,9 +346,8 @@ suite('TelemetryService', () => {
test
(
'
Uncaught Error Telemetry removes PII
'
,
sinon
.
test
(
function
()
{
let
errorStub
=
this
.
stub
(
window
,
'
onerror
'
);
let
settings
=
new
ErrorTestingSettings
();
let
service
=
new
TelemetryService
();
let
testAppender
=
new
TestTelemetryAppender
();
service
.
addTelemetryAppender
(
testAppender
);
let
service
=
new
TelemetryService
({
appender
:
[
testAppender
]
}
);
let
dangerousPathWithoutImportantInfoError
:
any
=
new
Error
(
'
dangerousPathWithoutImportantInfo
'
);
dangerousPathWithoutImportantInfoError
.
stack
=
settings
.
stack
;
...
...
@@ -474,9 +373,8 @@ suite('TelemetryService', () => {
try
{
let
settings
=
new
ErrorTestingSettings
();
let
service
=
new
TelemetryService
();
let
testAppender
=
new
TestTelemetryAppender
();
service
.
addTelemetryAppender
(
testAppender
);
let
service
=
new
TelemetryService
({
appender
:
[
testAppender
]
}
);
let
dangerousPathWithImportantInfoError
:
any
=
new
Error
(
settings
.
dangerousPathWithImportantInfo
);
dangerousPathWithImportantInfoError
.
stack
=
settings
.
stack
;
...
...
@@ -504,9 +402,8 @@ suite('TelemetryService', () => {
test
(
'
Uncaught Error Telemetry removes PII but preserves Code file path
'
,
sinon
.
test
(
function
()
{
let
errorStub
=
this
.
stub
(
window
,
'
onerror
'
);
let
settings
=
new
ErrorTestingSettings
();
let
service
=
new
TelemetryService
();
let
testAppender
=
new
TestTelemetryAppender
();
service
.
addTelemetryAppender
(
testAppender
);
let
service
=
new
TelemetryService
({
appender
:
[
testAppender
]
}
);
let
dangerousPathWithImportantInfoError
:
any
=
new
Error
(
'
dangerousPathWithImportantInfo
'
);
dangerousPathWithImportantInfoError
.
stack
=
settings
.
stack
;
...
...
@@ -534,9 +431,8 @@ suite('TelemetryService', () => {
try
{
let
settings
=
new
ErrorTestingSettings
();
let
service
=
new
TelemetryService
();
let
testAppender
=
new
TestTelemetryAppender
();
service
.
addTelemetryAppender
(
testAppender
);
let
service
=
new
TelemetryService
({
appender
:
[
testAppender
]
}
);
let
missingModelError
:
any
=
new
Error
(
settings
.
missingModelMessage
);
missingModelError
.
stack
=
settings
.
stack
;
...
...
@@ -564,9 +460,8 @@ suite('TelemetryService', () => {
test
(
'
Uncaught Error Telemetry removes PII but preserves Missing Model error message
'
,
sinon
.
test
(
function
()
{
let
errorStub
=
this
.
stub
(
window
,
'
onerror
'
);
let
settings
=
new
ErrorTestingSettings
();
let
service
=
new
TelemetryService
();
let
testAppender
=
new
TestTelemetryAppender
();
service
.
addTelemetryAppender
(
testAppender
);
let
service
=
new
TelemetryService
({
appender
:
[
testAppender
]
}
);
let
missingModelError
:
any
=
new
Error
(
'
missingModelMessage
'
);
missingModelError
.
stack
=
settings
.
stack
;
...
...
@@ -595,9 +490,8 @@ suite('TelemetryService', () => {
try
{
let
settings
=
new
ErrorTestingSettings
();
let
service
=
new
TelemetryService
();
let
testAppender
=
new
TestTelemetryAppender
();
service
.
addTelemetryAppender
(
testAppender
);
let
service
=
new
TelemetryService
({
appender
:
[
testAppender
]
}
);
let
noSuchFileError
:
any
=
new
Error
(
settings
.
noSuchFileMessage
);
noSuchFileError
.
stack
=
settings
.
stack
;
...
...
@@ -629,9 +523,8 @@ suite('TelemetryService', () => {
try
{
let
errorStub
=
this
.
stub
(
window
,
'
onerror
'
);
let
settings
=
new
ErrorTestingSettings
();
let
service
=
new
TelemetryService
();
let
testAppender
=
new
TestTelemetryAppender
();
service
.
addTelemetryAppender
(
testAppender
);
let
service
=
new
TelemetryService
({
appender
:
[
testAppender
]
}
);
let
noSuchFileError
:
any
=
new
Error
(
'
noSuchFileMessage
'
);
noSuchFileError
.
stack
=
settings
.
stack
;
...
...
@@ -659,9 +552,9 @@ suite('TelemetryService', () => {
test
(
'
Test hard idle does not affect sending normal events in active state
'
,
sinon
.
test
(
function
()
{
let
service
=
new
TelemetryService
({
enableHardIdle
:
true
,
enableSoftIdle
:
false
});
let
testAppender
=
new
TestTelemetryAppender
();
service
.
addTelemetryAppender
(
testAppender
);
let
service
=
new
TelemetryService
({
enableHardIdle
:
true
,
enableSoftIdle
:
false
,
appender
:
[
testAppender
]
});
//report an event
service
.
publicLog
(
'
testEvent
'
);
...
...
@@ -675,9 +568,8 @@ suite('TelemetryService', () => {
test
(
'
Test hard idle stops events from being sent in idle state
'
,
sinon
.
test
(
function
()
{
let
service
=
new
TelemetryService
({
enableHardIdle
:
true
,
enableSoftIdle
:
false
});
let
testAppender
=
new
TestTelemetryAppender
();
service
.
addTelemetryAppender
(
testAppender
);
let
service
=
new
TelemetryService
({
enableHardIdle
:
true
,
enableSoftIdle
:
false
,
appender
:
[
testAppender
]
}
);
// make the user idle
this
.
clock
.
tick
(
IdleMonitor
.
DEFAULT_IDLE_TIME
);
...
...
@@ -714,9 +606,8 @@ suite('TelemetryService', () => {
this
.
stub
(
IdleMonitor
,
'
IdleMonitor
'
,
MockIdleMonitor
);
let
service
=
new
TelemetryService
({
enableHardIdle
:
false
,
enableSoftIdle
:
true
});
let
testAppender
=
new
TestTelemetryAppender
();
service
.
addTelemetryAppender
(
testAppender
);
let
service
=
new
TelemetryService
({
enableHardIdle
:
false
,
enableSoftIdle
:
true
,
appender
:
[
testAppender
]
}
);
assert
.
equal
(
testAppender
.
getEventsCount
(),
0
);
...
...
@@ -741,7 +632,7 @@ suite('TelemetryService', () => {
test
(
'
Telemetry Service uses provided session ID
'
,
sinon
.
test
(
function
()
{
let
testSessionId
=
'
test session id
'
;
let
service
=
new
TelemetryService
({
sessionID
:
testSessionId
});
let
service
=
new
TelemetryService
({
sessionID
:
testSessionId
,
appender
:
[]
});
return
service
.
getTelemetryInfo
().
then
(
info
=>
{
assert
.
equal
(
info
.
sessionId
,
testSessionId
);
...
...
@@ -750,9 +641,8 @@ suite('TelemetryService', () => {
}));
test
(
'
Telemetry Service respects user opt-in settings
'
,
sinon
.
test
(
function
()
{
let
service
=
new
TelemetryService
({
userOptIn
:
false
});
let
testAppender
=
new
TestTelemetryAppender
();
service
.
addTelemetryAppender
(
testAppender
);
let
service
=
new
TelemetryService
({
userOptIn
:
false
,
appender
:
[
testAppender
]
}
);
service
.
publicLog
(
'
testEvent
'
);
assert
.
equal
(
testAppender
.
getEventsCount
(),
0
);
...
...
@@ -761,9 +651,8 @@ suite('TelemetryService', () => {
}));
test
(
'
Telemetry Service sends events when enableTelemetry is on even user optin is on
'
,
sinon
.
test
(
function
()
{
let
service
=
new
TelemetryService
({
userOptIn
:
true
});
let
testAppender
=
new
TestTelemetryAppender
();
service
.
addTelemetryAppender
(
testAppender
);
let
service
=
new
TelemetryService
({
userOptIn
:
true
,
appender
:
[
testAppender
]
}
);
service
.
publicLog
(
'
testEvent
'
);
assert
.
equal
(
testAppender
.
getEventsCount
(),
1
);
...
...
@@ -772,9 +661,8 @@ suite('TelemetryService', () => {
}));
test
(
'
Telemetry Service allows optin friendly events
'
,
sinon
.
test
(
function
()
{
let
service
=
new
TelemetryService
({
userOptIn
:
false
});
let
testAppender
=
new
TestTelemetryAppender
();
service
.
addTelemetryAppender
(
testAppender
);
let
service
=
new
TelemetryService
({
userOptIn
:
false
,
appender
:
[
testAppender
]
}
);
service
.
publicLog
(
'
testEvent
'
);
assert
.
equal
(
testAppender
.
getEventsCount
(),
0
);
...
...
src/vs/workbench/browser/workbench.ts
浏览文件 @
d99d89dc
...
...
@@ -62,7 +62,7 @@ import {IInstantiationService} from 'vs/platform/instantiation/common/instantiat
import
{
ServiceCollection
}
from
'
vs/platform/instantiation/common/serviceCollection
'
;
import
{
ILifecycleService
}
from
'
vs/platform/lifecycle/common/lifecycle
'
;
import
{
IMessageService
}
from
'
vs/platform/message/common/message
'
;
import
{
ITelemetryService
,
Extenstions
as
TelemetryExtensions
}
from
'
vs/platform/telemetry/common/telemetry
'
;
import
{
ITelemetryService
}
from
'
vs/platform/telemetry/common/telemetry
'
;
import
{
IThreadService
}
from
'
vs/platform/thread/common/thread
'
;
import
{
MainThreadService
}
from
'
vs/platform/thread/common/mainThreadService
'
;
import
{
IStatusbarService
}
from
'
vs/platform/statusbar/common/statusbar
'
;
...
...
@@ -389,8 +389,6 @@ export class Workbench implements IPartService {
<
IActionBarRegistry
>
Registry
.
as
(
ActionBarExtensions
.
Actionbar
).
setInstantiationService
(
this
.
instantiationService
);
<
IWorkbenchContributionsRegistry
>
Registry
.
as
(
WorkbenchExtensions
.
Workbench
).
setInstantiationService
(
this
.
instantiationService
);
<
IEditorRegistry
>
Registry
.
as
(
EditorExtensions
.
Editors
).
setInstantiationService
(
this
.
instantiationService
);
this
.
instantiationService
.
invokeFunction
(
TelemetryExtensions
.
TelemetryAppenders
.
activate
);
}
private
initSettings
():
void
{
...
...
src/vs/workbench/electron-browser/shell.ts
浏览文件 @
d99d89dc
...
...
@@ -21,6 +21,7 @@ import {Workbench} from 'vs/workbench/browser/workbench';
import
{
Storage
,
inMemoryLocalStorageInstance
}
from
'
vs/workbench/common/storage
'
;
import
{
ITelemetryService
,
NullTelemetryService
}
from
'
vs/platform/telemetry/common/telemetry
'
;
import
{
ElectronTelemetryService
}
from
'
vs/platform/telemetry/electron-browser/electronTelemetryService
'
;
import
{
AppInsightsAppender
}
from
'
vs/platform/telemetry/node/appInsightsAppender
'
;
import
{
ElectronIntegration
}
from
'
vs/workbench/electron-browser/integration
'
;
import
{
Update
}
from
'
vs/workbench/electron-browser/update
'
;
import
{
WorkspaceStats
}
from
'
vs/platform/telemetry/common/workspaceStats
'
;
...
...
@@ -207,7 +208,8 @@ export class WorkbenchShell {
appRoot
:
this
.
configuration
.
env
.
appRoot
,
extensionsRoot
:
this
.
configuration
.
env
.
userExtensionsHome
,
version
:
this
.
configuration
.
env
.
version
,
commitHash
:
this
.
configuration
.
env
.
commitHash
commitHash
:
this
.
configuration
.
env
.
commitHash
,
appender
:
[
new
AppInsightsAppender
(
this
.
storageService
,
this
.
contextService
)]
});
}
else
{
this
.
telemetryService
=
NullTelemetryService
;
...
...
src/vs/workbench/parts/telemetry/node/appInsights.telemetry.contribution.ts
已删除
100644 → 0
浏览文件 @
6d0aa3bc
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
'
use strict
'
;
import
{
Extenstions
}
from
'
vs/platform/telemetry/common/telemetry
'
;
import
AppInsightsTelemetryAppender
=
require
(
'
vs/workbench/parts/telemetry/node/nodeAppInsightsTelemetryAppender
'
);
Extenstions
.
TelemetryAppenders
.
registerTelemetryAppenderDescriptor
(
AppInsightsTelemetryAppender
.
NodeAppInsightsTelemetryAppender
);
\ No newline at end of file
src/vs/workbench/workbench.main.js
浏览文件 @
d99d89dc
...
...
@@ -74,8 +74,6 @@ define([
'
vs/workbench/parts/contentprovider/common/contentprovider.contribution
'
,
'
vs/workbench/parts/telemetry/node/appInsights.telemetry.contribution
'
,
'
vs/workbench/parts/themes/electron-browser/themes.contribution
'
,
'
vs/workbench/parts/feedback/electron-browser/feedback.contribution
'
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录