FUS: don't send logs from IDE built from sources

This commit is contained in:
Svetlana.Zemlyanskaya
2018-08-14 11:34:35 +02:00
parent 0825f9b29f
commit fa690a51f3
4 changed files with 100 additions and 12 deletions
@@ -49,7 +49,7 @@ public class EventLogExternalSettingsService extends SettingsConnectionService i
@NotNull
public LogEventFilter getEventFilter() {
final Set<String> whitelist = getWhitelistedGroups();
return new LogEventWhitelistFilter(whitelist);
return new LogEventCompositeFilter(new LogEventWhitelistFilter(whitelist), LogEventSnapshotBuildFilter.INSTANCE);
}
@NotNull
@@ -1,18 +1,33 @@
// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.intellij.internal.statistic.eventLog
import com.intellij.openapi.util.BuildNumber
interface LogEventFilter {
fun accepts(groupId: String) : Boolean
fun accepts(event: LogEvent) : Boolean
}
class LogEventWhitelistFilter(val whitelist: Set<String>) : LogEventFilter {
override fun accepts(groupId: String): Boolean {
return whitelist.contains(groupId)
override fun accepts(event: LogEvent): Boolean {
return whitelist.contains(event.group.id)
}
}
object LogEventSnapshotBuildFilter : LogEventFilter {
override fun accepts(event: LogEvent): Boolean {
val parts = BuildNumber.fromString(event.build).components
return parts.size != 2 || parts[1] != 0
}
}
class LogEventCompositeFilter(vararg val filters : LogEventFilter) : LogEventFilter {
override fun accepts(event: LogEvent): Boolean {
return filters.all { filter -> filter.accepts(event) }
}
}
object LogEventTrueFilter : LogEventFilter {
override fun accepts(groupId: String): Boolean {
override fun accepts(event: LogEvent): Boolean {
return true
}
}
@@ -61,7 +61,7 @@ class LogEventRecordRequest(val product : String, val user: String, val records:
var line = firstLine
while (line != null && recordSize + estimator.estimate(line) < maxRecordSize) {
val event = LogEventSerializer.fromString(line)
if (event != null && filter.accepts(event.group.id)) {
if (event != null && filter.accepts(event)) {
recordSize += estimator.estimate(line)
events.add(event)
}
@@ -144,7 +144,7 @@ class FeatureEventLogSerializationTest {
all.add(newLogEvent("session-id", "999.9999", "-1", "recorder-id-1", "1", "second"))
all.add(newLogEvent("session-id", "999.9999", "-1", "recorder-id-2", "1", "third"))
testWhitelist(HashSet(), all, ArrayList())
testWhitelistFilter(HashSet(), all, ArrayList())
}
@Test
@@ -163,7 +163,7 @@ class FeatureEventLogSerializationTest {
val whitelist = HashSet<String>()
whitelist.add("recorder-id")
testWhitelist(whitelist, all, filtered)
testWhitelistFilter(whitelist, all, filtered)
}
@Test
@@ -183,7 +183,7 @@ class FeatureEventLogSerializationTest {
val whitelist = HashSet<String>()
whitelist.add("recorder-id")
whitelist.add("recorder-id-2")
testWhitelist(whitelist, all, filtered)
testWhitelistFilter(whitelist, all, filtered)
}
@Test
@@ -205,7 +205,68 @@ class FeatureEventLogSerializationTest {
whitelist.add("recorder-id")
whitelist.add("recorder-id-1")
whitelist.add("recorder-id-2")
testWhitelist(whitelist, all, filtered)
testWhitelistFilter(whitelist, all, filtered)
}
@Test
fun testPartialSnapshotBuildsFilter() {
val first = newLogEvent("session-id", "999.9999", "-1", "recorder-id", "1", "first")
val second = newLogEvent("session-id", "999.0", "-1", "recorder-id-1", "1", "second")
val third = newLogEvent("session-id", "999.9999", "-1", "recorder-id", "1", "third")
val all = ArrayList<LogEvent>()
all.add(first)
all.add(second)
all.add(third)
val filtered = ArrayList<LogEvent>()
filtered.add(first)
filtered.add(third)
testSnapshotBuilderFilter(all, filtered)
}
@Test
fun testNoneSnapshotBuildsFilter() {
val first = newLogEvent("session-id", "999.9999", "-1", "recorder-id", "1", "first")
val second = newLogEvent("session-id", "999.01", "-1", "recorder-id-1", "1", "second")
val third = newLogEvent("session-id", "999.9999", "-1", "recorder-id", "1", "third")
val all = ArrayList<LogEvent>()
all.add(first)
all.add(second)
all.add(third)
testSnapshotBuilderFilter(all, all)
}
@Test
fun testAllSnapshotBuildsFilter() {
val first = newLogEvent("session-id", "999.00", "-1", "recorder-id", "1", "first")
val second = newLogEvent("session-id", "999.0", "-1", "recorder-id-1", "1", "second")
val third = newLogEvent("session-id", "999.0", "-1", "recorder-id", "1", "third")
val all = ArrayList<LogEvent>()
all.add(first)
all.add(second)
all.add(third)
testSnapshotBuilderFilter(all, ArrayList())
}
@Test
fun testSnapshotBuildsAndWhitelistFilter() {
val first = newLogEvent("session-id", "999.9999", "-1", "recorder-id", "1", "first")
val second = newLogEvent("session-id", "999.9999", "-1", "recorder-id-1", "1", "second")
val third = newLogEvent("session-id", "999.0", "-1", "recorder-id", "1", "third")
val all = ArrayList<LogEvent>()
all.add(first)
all.add(second)
all.add(third)
val filtered = ArrayList<LogEvent>()
filtered.add(first)
val whitelist = HashSet<String>()
whitelist.add("recorder-id")
testWhitelistAndSnapshotBuildFilter(whitelist, all, filtered)
}
@Test
@@ -275,7 +336,19 @@ class FeatureEventLogSerializationTest {
assertNull(deserialized)
}
private fun testWhitelist(whitelist: Set<String>, all: List<LogEvent>, filtered: List<LogEvent>) {
private fun testWhitelistFilter(whitelist: Set<String>, all: List<LogEvent>, filtered: List<LogEvent>) {
testEventLogFilter(all, filtered, LogEventWhitelistFilter(whitelist))
}
private fun testWhitelistAndSnapshotBuildFilter(whitelist: Set<String>, all: List<LogEvent>, filtered: List<LogEvent>) {
testEventLogFilter(all, filtered, LogEventCompositeFilter(LogEventWhitelistFilter(whitelist), LogEventSnapshotBuildFilter))
}
private fun testSnapshotBuilderFilter(all: List<LogEvent>, filtered: List<LogEvent>) {
testEventLogFilter(all, filtered, LogEventSnapshotBuildFilter)
}
private fun testEventLogFilter(all: List<LogEvent>, filtered: List<LogEvent>, filter : LogEventFilter) {
val records = ArrayList<LogEventRecord>()
if (!filtered.isEmpty()) {
records.add(LogEventRecord(filtered))
@@ -289,7 +362,7 @@ class FeatureEventLogSerializationTest {
out.append(LogEventSerializer.toString(event)).append("\n")
}
FileUtil.writeToFile(log, out.toString())
val actual = LogEventRecordRequest.create(log, "IU", "user-id", 600, LogEventWhitelistFilter(whitelist))
val actual = LogEventRecordRequest.create(log, "IU", "user-id", 600, filter)
assertEquals(expected, actual)
}
finally {