Merge pull request #1396 from efiop/master

analytics: collect cmd early
This commit is contained in:
Ruslan Kuprieiev
2018-12-02 00:18:10 +02:00
committed by GitHub
4 changed files with 22 additions and 12 deletions
+19 -9
View File
@@ -129,10 +129,9 @@ class Analytics(object):
else:
raise NotImplementedError
def _collect(self, args=None, ret=None):
def collect(self):
from dvc.scm import SCM
from dvc.project import Project, NotDvcProjectError
from dvc.command.daemon import CmdDaemonAnalytics
self.info[self.PARAM_DVC_VERSION] = VERSION
self.info[self.PARAM_IS_BINARY] = is_binary()
@@ -146,6 +145,11 @@ class Analytics(object):
except NotDvcProjectError:
pass
def collect_cmd(self, args, ret):
from dvc.command.daemon import CmdDaemonAnalytics
assert isinstance(ret, int) or ret is None
if ret is not None:
self.info[self.PARAM_CMD_RETURN_CODE] = ret
@@ -161,7 +165,7 @@ class Analytics(object):
return fobj.name
@staticmethod
def _is_enabled(cmd):
def _is_enabled(cmd=None):
from dvc.config import Config
from dvc.project import Project, NotDvcProjectError
from dvc.command.daemon import CmdDaemonBase
@@ -190,18 +194,24 @@ class Analytics(object):
.format('en' if enabled else 'dis'))
return enabled
def send(self, detach=True, cmd=None, args=None, ret=None):
import requests
@staticmethod
def send_cmd(cmd, args, ret):
from dvc.daemon import Daemon
if not self._is_enabled(cmd):
if not Analytics._is_enabled(cmd):
return
if detach: # pragma: no cover
Daemon()(['analytics', self.dump()])
a = Analytics()
a.collect_cmd(args, ret)
Daemon()(['analytics', a.dump()])
def send(self):
import requests
if not self._is_enabled():
return
self._collect(args=args, ret=ret)
self.collect()
Logger.debug("Sending analytics: {}".format(self.info))
+1 -1
View File
@@ -30,6 +30,6 @@ class CmdDaemonAnalytics(CmdDaemonBase):
from dvc.analytics import Analytics
analytics = Analytics.load(self.args.target)
analytics.send(detach=False)
analytics.send()
return 0
+1 -1
View File
@@ -30,6 +30,6 @@ def main(argv=None):
Logger.error('Unexpected error', ex)
ret = 255
Analytics().send(detach=True, cmd=cmd, args=args, ret=ret)
Analytics().send_cmd(cmd, args, ret)
return ret
+1 -1
View File
@@ -20,7 +20,7 @@ def _clean_getenv(key, default=None):
class TestAnalytics(TestDir):
def test(self):
a = Analytics()
a._collect()
a.collect()
self.assertTrue(isinstance(a.info, dict))
self.assertNotEqual(a.info, {})
self.assertTrue(a.PARAM_USER_ID in a.info.keys())