Exemplo n.º 1
0
        void SaveUsage(UsageStore store)
        {
            dirCreate(System.IO.Path.GetDirectoryName(storePath));
            var json = SimpleJson.SerializeObject(store);

            writeAllText(storePath, json, Encoding.UTF8);
        }
Exemplo n.º 2
0
        public void LoadingWorks()
        {
            InitializeEnvironment(TestBasePath, false, false);
            var userId       = Guid.NewGuid().ToString();
            var appVersion   = ApplicationInfo.Version;
            var unityVersion = "2017.3f1";
            var instanceId   = Guid.NewGuid().ToString();
            var usageStore   = new UsageStore();

            usageStore.Model.Guid = userId;
            var storePath   = Environment.UserCachePath.Combine(Constants.UsageFile);
            var usageLoader = new UsageLoader(storePath);

            var settings = Substitute.For <ISettings>();

            settings.Exists(Arg.Is <string>(Constants.GuidKey)).Returns(true);
            settings.Get(Arg.Is <string>(Constants.GuidKey)).Returns(userId);
            var usageTracker = new UsageTrackerSync(settings, usageLoader, unityVersion, instanceId);

            usageTracker.IncrementNumberOfStartups();
            usageTracker.IncrementNumberOfStartups();

            Assert.IsTrue(storePath.FileExists());
            var json       = storePath.ReadAllText(Encoding.UTF8);
            var savedStore = json.FromJson <UsageStore>(lowerCase: true);

            Assert.AreEqual(2, savedStore.GetCurrentMeasures(appVersion, unityVersion, instanceId).NumberOfStartups);
        }
Exemplo n.º 3
0
        async Task <UsageStore> LoadUsage()
        {
            await Initialize();

            var        json   = fileExists(storePath) ? readAllText(storePath, Encoding.UTF8) : null;
            UsageStore result = null;

            try
            {
                result = json != null?
                         SimpleJson.DeserializeObject <UsageStore>(json) :
                             new UsageStore
                {
                    Model = new UsageModel()
                };
            }
            catch
            {
                result = new UsageStore {
                    Model = new UsageModel()
                };
            }

            result.Model.Lang       = CultureInfo.InstalledUICulture.IetfLanguageTag;
            result.Model.AppVersion = AssemblyVersionInformation.Version;
            result.Model.VSVersion  = vsservices.VSVersion;

            return(result);
        }
Exemplo n.º 4
0
        public void IncrementMetricsWorks(string measureName)
        {
            var userId       = Guid.NewGuid().ToString();
            var appVersion   = ApplicationInfo.Version;
            var unityVersion = "2017.3f1";
            var instanceId   = Guid.NewGuid().ToString();
            var usageLoader  = Substitute.For <IUsageLoader>();
            var usageStore   = new UsageStore();
            var settings     = Substitute.For <ISettings>();

            settings.Exists(Arg.Is <string>(Constants.GuidKey)).Returns(true);
            settings.Get(Arg.Is <string>(Constants.GuidKey)).Returns(userId);

            usageStore.Model.Guid = userId;
            usageLoader.Load(Arg.Is <string>(userId)).Returns(usageStore);

            var usageTracker = new UsageTrackerSync(settings, usageLoader, unityVersion, instanceId);

            var currentUsage = usageStore.GetCurrentMeasures(appVersion, unityVersion, instanceId);
            var prop         = currentUsage.GetType().GetProperty(measureName);

            Assert.AreEqual(0, prop.GetValue(currentUsage, null));
            var meth = usageTracker.GetType().GetMethod("Increment" + measureName);

            meth.Invoke(usageTracker, null);
            currentUsage = usageStore.GetCurrentMeasures(appVersion, unityVersion, instanceId);
            Assert.AreEqual(1, prop.GetValue(currentUsage, null));
        }
Exemplo n.º 5
0
        /// <summary>
        /// You must pass the smallest timeframe the software will watch for.
        /// Eg.: If set to TEN_MINUTES, then one mouse movement or keypress in that timeframe
        /// will be considered an active time.
        /// DataPrecision is not implemented fully, only High precision works
        /// </summary>
        /// <param name="appName">If saving is enabled the resulting file will have this as prefix</param>
        /// <param name="resolution">The smallest timeframe the software will watch for</param>
        /// <param name="SavePreference">Dictates how usage data will be saved/stored</param>
        /// <param name="dataPrecision">Sets how fine grained the data will be</param>
        public Watcher(string appName, Resolution chosenResolution,
                       SavePreference preference, DataPrecision dataPrecision)
        {
            ISaveService saveService = new SaveService(appName, preference, dataPrecision);
            IUsageKeeper keeper      = CreateKeeper(ref saveService, dataPrecision, chosenResolution);
            IStorage     store       = new UsageStore(keeper);

            wService = new WatcherService(ref store, ref saveService);
        }
Exemplo n.º 6
0
        public void SubmissionWorks()
        {
            InitializeEnvironment(TestBasePath, false, false);
            InitializePlatform(TestBasePath, false, "SubmissionWorks");
            var userId       = Guid.NewGuid().ToString();
            var appVersion   = ApplicationInfo.Version;
            var unityVersion = "2017.3f1";
            var instanceId   = Guid.NewGuid().ToString();
            var usageStore   = new UsageStore();

            usageStore.Model.Guid = userId;
            var storePath   = Environment.UserCachePath.Combine(Constants.UsageFile);
            var usageLoader = new UsageLoader(storePath);

            var settings = Substitute.For <ISettings>();

            settings.Exists(Arg.Is <string>(Constants.GuidKey)).Returns(true);
            settings.Get(Arg.Is <string>(Constants.GuidKey)).Returns(userId);
            var usageTracker = new UsageTrackerSync(settings, usageLoader, unityVersion, instanceId);

            usageTracker.IncrementNumberOfStartups();
            usageTracker.IncrementNumberOfStartups();

            var json       = storePath.ReadAllText(Encoding.UTF8);
            var savedStore = json.FromJson <UsageStore>(lowerCase: true);
            var current    = savedStore.Model.GetCurrentUsage(appVersion, unityVersion, instanceId);
            var yesterday  = DateTimeOffset.UtcNow.AddDays(-1);

            current.Dimensions.Date       = yesterday;
            savedStore.LastSubmissionDate = yesterday;
            storePath.WriteAllText(savedStore.ToJson(lowerCase: true));
            settings.Get(Arg.Is <string>(Constants.MetricsKey), Arg.Any <bool>()).Returns(true);

            var metricsService = new MetricsService(ProcessManager, TaskManager, Platform.Keychain, Environment);

            usageTracker.MetricsService = metricsService;
            var method = usageTracker.GetType().GetMethod("SendUsage", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);

            method.Invoke(usageTracker, null);
            json       = storePath.ReadAllText(Encoding.UTF8);
            savedStore = json.FromJson <UsageStore>(lowerCase: true);
        }
Exemplo n.º 7
0
 void SaveUsage(UsageStore store)
 {
     dirCreate(System.IO.Path.GetDirectoryName(storePath));
     var json = SimpleJson.SerializeObject(store);
     writeAllText(storePath, json, Encoding.UTF8);
 }
Exemplo n.º 8
0
        async Task<UsageStore> LoadUsage()
        {
            await Initialize();

            var json = fileExists(storePath) ? readAllText(storePath, Encoding.UTF8) : null;
            UsageStore result = null;
            try
            {
                result = json != null ?
                    SimpleJson.DeserializeObject<UsageStore>(json) :
                    new UsageStore { Model = new UsageModel() };
            }
            catch
            {
                result = new UsageStore { Model = new UsageModel() };
            }

            result.Model.Lang = CultureInfo.InstalledUICulture.IetfLanguageTag;
            result.Model.AppVersion = AssemblyVersionInformation.Version;
            result.Model.VSVersion = vsservices.VSVersion;

            return result;
        }