예제 #1
0
        /// <summary>
        /// Creates singleton instance of DataCollectionRequestHandler.
        /// </summary>
        /// <param name="communicationManager">
        /// Handles socket communication.
        /// </param>
        /// <param name="messageSink">
        /// Message sink for sending messages to execution process.
        /// </param>
        /// <returns>
        /// The instance of <see cref="DataCollectionRequestHandler"/>.
        /// </returns>
        public static DataCollectionRequestHandler Create(
            ICommunicationManager communicationManager,
            IMessageSink messageSink)
        {
            if (Instance == null)
            {
                ValidateArg.NotNull(communicationManager, nameof(communicationManager));
                ValidateArg.NotNull(messageSink, nameof(messageSink));

                lock (SyncObject)
                {
                    if (Instance == null)
                    {
                        Instance = new DataCollectionRequestHandler(
                            communicationManager,
                            messageSink,
                            DataCollectionManager.Create(messageSink),
                            new DataCollectionTestCaseEventHandler(),
                            JsonDataSerializer.Instance);
                    }
                }
            }

            return Instance;
        }
예제 #2
0
    static void ShowExportWindow()
    {
        string appToken       = "";
        string currentSceneId = "";
        List <UploadSceneObject> vadrScenes = new List <UploadSceneObject>();

        UnityEngine.SceneManagement.Scene currentScene = EditorSceneManager.GetActiveScene();
        string currentPath = currentScene.path;

        if (currentPath.Length == 0)
        {
            if (EditorUtility.DisplayDialog("Save Scene", "Please save scene first to Upload model.", "Ok", ""))
            {
                return;
            }
        }
        else
        {
            float totalScenes     = EditorBuildSettings.scenes.Length;
            float completedScenes = 0;
            foreach (EditorBuildSettingsScene S in EditorBuildSettings.scenes)
            {
                EditorUtility.DisplayProgressBar("Initializing", "Initializing Configuration Manager",
                                                 completedScenes / totalScenes);
                completedScenes++;
                if (S.enabled)
                {
                    string sceneId = "";
                    EditorSceneManager.OpenScene(S.path);
                    DataCollectionManager dataManager = UnityEngine.Object.FindObjectOfType <DataCollectionManager>();
                    if (dataManager != null)
                    {
                        // Prefill Scene Id and App Token of already present.
                        if (dataManager.sceneId != null)
                        {
                            sceneId = dataManager.sceneId;
                        }
                        if (S.path == currentPath)
                        {
                            currentSceneId = dataManager.sceneId;
                        }
                        if (appToken.Length == 0 && dataManager.appToken != null)
                        {
                            appToken = dataManager.appToken;
                        }
                    }
                    vadrScenes.Add(new UploadSceneObject(sceneId, false, S.path));
                }
            }
            if (currentPath.Length > 0)
            {
                EditorSceneManager.OpenScene(currentPath);
            }
            EditorUtility.ClearProgressBar();
            SceneExporterManager sceneExporter = ScriptableObject.CreateInstance <SceneExporterManager>();
            sceneExporter.Init(appToken, currentSceneId, vadrScenes);
            sceneExporter.ShowWindow();
        }
    }
    //Do this when the selectable UI object is selected.
    public void OnSelect(BaseEventData eventData)
    {
        Debug.Log(this.gameObject.name + " was selected");
        DataCollectionManager dm = GameObject.Find("DataCollectionManager").GetComponent <DataCollectionManager>();

        dm.step = 1;
        GameObject.Find("Input").GetComponent <Text>().text = dm.Textboxes[dm.step].text;
    }
예제 #4
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            string endPoint                  = Configuration.GetValue <string>("Secrets:endpoint");
            string authKey                   = Configuration.GetValue <string>("Secrets:authkey");
            string databaseId                = Configuration.GetValue <string>("Secrets:database");
            string emCollectionId            = Configuration.GetValue <string>("Secrets:emCollection");
            string sadCollectionId           = Configuration.GetValue <string>("Secrets:sadCollection");
            string redisConnectionString     = Configuration.GetValue <string>("Secrets:redisConnectionString");
            string sadSizeLookupCollectionId = Configuration.GetValue <string>("Secrets:sadSizeLookupCollection");
            string sadFSMLookupCollectionId  = Configuration.GetValue <string>("Secrets:sadFSMLookupCollection");
            string enableAiTelemetry         = Configuration.GetValue <string>("ApplicationInsights:enabled");
            string aiKey = Configuration.GetValue <string>("ApplicationInsights:InstrumentationKey");

            var cosmosClient = new CosmosClientBuilder(endPoint, authKey)
                               .WithConnectionModeDirect()
                               .Build();

            var dataCollectionManager = new DataCollectionManager(cosmosClient, databaseId, new NetCoreCachedActiveCollectionsService());

            services.AddSingleton <ILogManager>(container => new NetCoreLogManager(enableAiTelemetry));
            services.AddSingleton <IEfficiencyMetricDataService, EfficiencyMetricDataService>();
            services.AddSingleton <ISelfAssesmentDashboardDataService, SelfAssesmentDashboardDataService>();
            services.AddSingleton <IContextDataService, ContextDataService>();
            services.AddSingleton <IActiveEstablishmentsService>(container => new RedisCachedActiveEstablishmentIdsService(container.GetRequiredService <IContextDataService>(), container.GetRequiredService <IFinancialDataService>(), redisConnectionString));
            services.AddSingleton <IFinancialDataService, FinancialDataService>();
            services.AddSingleton <IFinancialDataRepository>(container => new CosmosDbFinancialDataRepository(dataCollectionManager, cosmosClient, databaseId, container.GetRequiredService <ILogManager>()));
            services.AddSingleton <IEdubaseRepository>(container => new CosmosDbEdubaseRepository(dataCollectionManager, cosmosClient, databaseId, container.GetRequiredService <ILogManager>()));
            services.AddSingleton <IEfficiencyMetricRepository>(container => new CosmosDBEfficiencyMetricRepository(cosmosClient, databaseId, emCollectionId, container.GetRequiredService <ILogManager>()));
            services.AddSingleton <ISelfAssesmentDashboardRepository>(container => new CosmosDBSelfAssesmentDashboardRepository(cosmosClient, databaseId, sadCollectionId, sadSizeLookupCollectionId, sadFSMLookupCollectionId, container.GetRequiredService <ILogManager>()));
            services.AddSingleton <IDataCollectionManager>(dataCollectionManager);

            services.AddLogging(builder =>
            {
                builder.AddApplicationInsights(aiKey);
            });

            services.AddApplicationInsightsTelemetry();

            services.AddCors(options =>
            {
                options.AddDefaultPolicy(
                    builder =>
                {
                    builder.WithOrigins("http://localhost:4200", "http://localhost:4201");
                });
            });

            services.AddControllers();

            services.AddHsts(options =>
            {
                options.Preload           = true;
                options.IncludeSubDomains = true;
                options.MaxAge            = TimeSpan.FromDays(365);
            });

            //services.AddAntiforgery(o => o.SuppressXFrameOptionsHeader = true);
        }
예제 #5
0
 /// <summary>
 /// Initializes a new instance of the <see cref="DataCollectionRequestHandler"/> class.
 /// </summary>
 /// <param name="messageSink">
 /// The message sink.
 /// </param>
 protected DataCollectionRequestHandler(IMessageSink messageSink)
     : this(
         new SocketCommunicationManager(),
         messageSink,
         DataCollectionManager.Create(messageSink),
         new DataCollectionTestCaseEventHandler())
 {
     this.messageSink = messageSink;
 }
예제 #6
0
    void Start()
    {
        player                = transform.parent.gameObject.GetComponent <Player>();
        gameManager           = GameManager.gameManager;
        rlManager             = RLManager.rlManager;
        dataCollectionManager = DataCollectionManager.dataCollectionManager;
        initialPosition       = gameManager.playerStartPosition;
        gridSize              = this.gameManager.getGridSize();

        startNewEpoche();
    }
예제 #7
0
 /// <summary>
 /// Initializes a new instance of the <see cref="DataCollectionRequestHandler"/> class.
 /// </summary>
 /// <param name="messageSink">
 /// The message sink.
 /// </param>
 protected DataCollectionRequestHandler(IMessageSink messageSink)
     : this(
         new SocketCommunicationManager(),
         messageSink,
         DataCollectionManager.Create(messageSink),
         new DataCollectionTestCaseEventHandler(),
         JsonDataSerializer.Instance,
         new FileHelper())
 {
     this.messageSink = messageSink;
 }
예제 #8
0
        public void SessionEndedShouldNotReturnAttachmentsIfExceptionIsThrownWhileGettingAttachments()
        {
            var runSettings = string.Format(this.defaultRunSettings, this.dataCollectorSettings);
            var mockDataCollectionAttachmentManager = new Mock <IDataCollectionAttachmentManager>();

            mockDataCollectionAttachmentManager.Setup(x => x.GetAttachments(It.IsAny <DataCollectionContext>())).Throws <Exception>();
            this.dataCollectionManager = new DataCollectionManager(mockDataCollectionAttachmentManager.Object, this.mockMessageSink.Object, new Mock <IDataCollectorLoader>().Object);
            this.dataCollectionManager.InitializeDataCollectors(runSettings);

            var result = this.dataCollectionManager.SessionEnded();

            Assert.AreEqual(0, result.Count);
        }
예제 #9
0
        public DataCollectionManagerTests()
        {
            this.friendlyName      = "CustomDataCollector";
            this.uri               = "my://custom/datacollector";
            this.envVarList        = new List <KeyValuePair <string, string> >();
            this.mockDataCollector = new Mock <DataCollector2>();
            this.mockDataCollector.As <ITestExecutionEnvironmentSpecifier>().Setup(x => x.GetTestExecutionEnvironmentVariables()).Returns(this.envVarList);
            this.dataCollectorSettings = string.Format(this.defaultRunSettings, string.Format(this.defaultDataCollectionSettings, this.friendlyName, this.uri, this.mockDataCollector.Object.GetType().AssemblyQualifiedName, typeof(DataCollectionManagerTests).GetTypeInfo().Assembly.Location, string.Empty));
            this.mockMessageSink       = new Mock <IMessageSink>();
            this.mockDataCollectionAttachmentManager = new Mock <IDataCollectionAttachmentManager>();
            this.mockDataCollectionAttachmentManager.SetReturnsDefault <List <AttachmentSet> >(new List <AttachmentSet>());

            this.dataCollectionManager = new TestableDataCollectionManager(this.mockDataCollectionAttachmentManager.Object, this.mockMessageSink.Object, this.mockDataCollector.Object);
        }
예제 #10
0
        public void SessionEndedShouldCancelProcessingAttachmentRequestsIfSessionIsCancelled()
        {
            var runSettings           = string.Format(this.defaultRunSettings, this.dataCollectorSettings);
            var mockAttachmentManager = new Mock <IDataCollectionAttachmentManager>();

            this.dataCollectionManager = new DataCollectionManager(mockAttachmentManager.Object, this.mockMessageSink.Object, this.dataCollectorLoader.Object);

            this.dataCollectionManager.InitializeDataCollectors(runSettings);
            this.dataCollectionManager.SessionStarted();

            var result = this.dataCollectionManager.SessionEnded(true);

            mockAttachmentManager.Verify(x => x.Cancel(), Times.Once);
        }
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();
        bool periodicSendFlag             = true;
        bool pauseSendFlag                = true;
        bool pauseOnHeadsetRemoval        = true;
        DataCollectionManager dataManager = (DataCollectionManager)target;

        if (GUILayout.Button("Configure Manager"))
        {
            List <Type> typeList = ConfigurationManager.GetAllEventCollectors();
            List <VadrEventCollector> eventCollectors = new List <VadrEventCollector>();
            for (int i = 0; i < typeList.Count; i++)
            {
                eventCollectors.Add(new VadrEventCollector(typeList[i], false, -1.0f));
            }
            pauseSendFlag         = dataManager.pauseSendFlag;
            periodicSendFlag      = dataManager.periodicSendFlag;
            pauseOnHeadsetRemoval = dataManager.pauseOnHeadsetRemoval;
            GameObject gameobject = dataManager.gameObject;
            if (gameobject != null)
            {
                for (int i = 0; i < eventCollectors.Count; i++)
                {
                    IEventCollector collector = gameobject.GetComponent(eventCollectors[i].collector) as IEventCollector;
                    if (collector != null)
                    {
                        eventCollectors[i].enable = true;
                        if ((collector.getTimeInterval() < eventCollectors[i].timeInterval) || (eventCollectors[i].timeInterval < 0))
                        {
                            eventCollectors[i].timeInterval = collector.getTimeInterval();
                        }
                    }
                }
            }
            for (int i = 0; i < eventCollectors.Count; i++)
            {
                if (eventCollectors[i].timeInterval < 0)
                {
                    eventCollectors[i].timeInterval = 0.2f;
                }
            }
            ConfigurationManager.Init(ref dataManager, eventCollectors,
                                      dataManager.appId, dataManager.appToken, dataManager.testMode, periodicSendFlag, pauseSendFlag, pauseOnHeadsetRemoval);
            ConfigurationManager.ShowWindow();
        }
    }
예제 #12
0
 /// <summary>
 /// Initialize the configuration window
 /// </summary>
 /// <param name="manager">DataCollectionManager for which configuration is to be done</param>
 /// <param name="appId">Current appId if there.</param>
 /// <param name="appToken">Current appId if there.</param>
 /// <param name="testMode">Current test mode if there.</param>
 /// <param name="periodicSendFlag">Whether to send data periodically</param>
 /// <param name="pauseSendFlag">Whether to send data on pause and level load</param>
 public static void Init(ref DataCollectionManager manager, List <VadrEventCollector> eventCollectors,
                         string appId, string appToken, bool testMode, bool periodicSendFlag, bool pauseSendFlag, bool pauseOnHeadsetRemoval)
 {
     ConfigurationManager.manager               = manager;
     ConfigurationManager.appId                 = appId;
     ConfigurationManager.appToken              = appToken;
     ConfigurationManager.testMode              = testMode;
     ConfigurationManager.eventCollectors       = eventCollectors;
     ConfigurationManager.periodicSendFlag      = periodicSendFlag;
     ConfigurationManager.pauseSendFlag         = pauseSendFlag;
     ConfigurationManager.scenes                = new List <VadrScene>();
     ConfigurationManager.pauseOnHeadsetRemoval = pauseOnHeadsetRemoval;
     errors          = "";
     warnings        = "";
     info            = "";
     scenesScrollPos = new Vector2();
     eventsScrollPos = new Vector2();
 }
예제 #13
0
        public DataCollectionManagerTests()
        {
            var friendlyName = "CustomDataCollector";
            var uri          = "my://custom/datacollector";

            this.envVarList        = new List <KeyValuePair <string, string> >();
            this.mockDataCollector = new Mock <DataCollector2>();
            this.mockDataCollector.As <ITestExecutionEnvironmentSpecifier>().Setup(x => x.GetTestExecutionEnvironmentVariables()).Returns(this.envVarList);

            this.dataCollectorSettings = string.Format(this.defaultRunSettings, string.Format(this.defaultDataCollectionSettings, friendlyName, uri, this.mockDataCollector.Object.GetType().AssemblyQualifiedName, typeof(DataCollectionManagerTests).GetTypeInfo().Assembly.Location, string.Empty));
            this.dataCollectorSettingsWithWrongFriendlyName = string.Format(this.defaultRunSettings, string.Format(this.defaultDataCollectionSettings, "anyFriendlyName", uri, this.mockDataCollector.Object.GetType().AssemblyQualifiedName, typeof(DataCollectionManagerTests).GetTypeInfo().Assembly.Location, string.Empty));
            this.dataCollectorSettingsWithoutFriendlyName   = string.Format(this.defaultRunSettings, string.Format(this.defaultDataCollectionSettings, string.Empty, uri, this.mockDataCollector.Object.GetType().AssemblyQualifiedName, typeof(DataCollectionManagerTests).GetTypeInfo().Assembly.Location, string.Empty).Replace("friendlyName=\"\"", string.Empty));
            this.dataCollectorSettingsEnabled  = string.Format(this.defaultRunSettings, string.Format(this.defaultDataCollectionSettings, friendlyName, uri, this.mockDataCollector.Object.GetType().AssemblyQualifiedName, typeof(DataCollectionManagerTests).GetTypeInfo().Assembly.Location, "enabled=\"true\""));
            this.dataCollectorSettingsDisabled = string.Format(this.defaultRunSettings, string.Format(this.defaultDataCollectionSettings, friendlyName, uri, this.mockDataCollector.Object.GetType().AssemblyQualifiedName, typeof(DataCollectionManagerTests).GetTypeInfo().Assembly.Location, "enabled=\"false\""));
            this.mockMessageSink = new Mock <IMessageSink>();
            this.mockDataCollectionAttachmentManager = new Mock <IDataCollectionAttachmentManager>();
            this.mockDataCollectionAttachmentManager.SetReturnsDefault <List <AttachmentSet> >(new List <AttachmentSet>());

            this.dataCollectionManager = new TestableDataCollectionManager(this.mockDataCollectionAttachmentManager.Object, this.mockMessageSink.Object, this.mockDataCollector.Object);
        }
예제 #14
0
    /// <summary>
    /// Save Configuration of a scene. Adds DataCollectionManager if not present
    /// </summary>
    /// <param name="vadrScene">Scene whose configuration is to be saved</param>
    static void SaveSceneConfiguration(VadrScene vadrScene)
    {
        EditorSceneManager.OpenScene(vadrScene.scenePath);
        DataCollectionManager dataManager = UnityEngine.Object.FindObjectOfType <DataCollectionManager>();

        if (dataManager != null)
        {
            // Add send data option here
            dataManager.appId                 = ConfigurationManager.appId;
            dataManager.appToken              = ConfigurationManager.appToken;
            dataManager.testMode              = ConfigurationManager.testMode;
            dataManager.sceneId               = vadrScene.sceneId;
            dataManager.pauseSendFlag         = ConfigurationManager.pauseSendFlag;
            dataManager.periodicSendFlag      = ConfigurationManager.periodicSendFlag;
            dataManager.pauseOnHeadsetRemoval = ConfigurationManager.pauseOnHeadsetRemoval;
            EditorUtility.SetDirty(dataManager); // Tells unity that it is modified and save it.
            AddEventScripts(dataManager.gameObject);
        }
        else
        {
            // Add send data option here
            PrefabUtility.InstantiatePrefab(Resources.Load("Prefabs/VadRManager") as GameObject);
            dataManager = UnityEngine.Object.FindObjectOfType <DataCollectionManager>();
            if (dataManager != null)
            {
                // Add send data option here
                dataManager.appId                 = ConfigurationManager.appId;
                dataManager.appToken              = ConfigurationManager.appToken;
                dataManager.testMode              = ConfigurationManager.testMode;
                dataManager.sceneId               = vadrScene.sceneId;
                dataManager.pauseSendFlag         = ConfigurationManager.pauseSendFlag;
                dataManager.periodicSendFlag      = ConfigurationManager.periodicSendFlag;
                dataManager.pauseOnHeadsetRemoval = ConfigurationManager.pauseOnHeadsetRemoval;
                EditorUtility.SetDirty(dataManager); // Tells unity that it is modified and save it.
                AddEventScripts(dataManager.gameObject);
            }
        }
        UnityEngine.SceneManagement.Scene scene = SceneManager.GetSceneByPath(vadrScene.scenePath);
        EditorSceneManager.SaveScene(scene);
    }
예제 #15
0
    /// <summary>
    /// Setting the configuration window from current parameters
    /// </summary>
    static void ShowConfigurationWindow()
    {
        string                    appId                 = "";
        string                    appToken              = "";
        bool                      testMode              = true;
        bool                      pauseSendFlag         = true;
        bool                      periodicSendFlag      = true;
        bool                      pauseOnHeadsetRemoval = true;
        List <VadrScene>          vadrScenes            = new List <VadrScene>();
        List <Type>               typeList              = ConfigurationManager.GetAllEventCollectors();
        List <VadrEventCollector> eventCollectors       = new List <VadrEventCollector>();

        for (int i = 0; i < typeList.Count; i++)
        {
            eventCollectors.Add(new VadrEventCollector(typeList[i], false, -1.0f));
        }
        UnityEngine.SceneManagement.Scene currentScene = EditorSceneManager.GetActiveScene();
        string currentPath = currentScene.path;

        if (currentPath.Length > 0 || EditorUtility.DisplayDialog("", "You can lose unsaved changes", "Continue", "Cancel"))
        {
            float totalScenes     = EditorBuildSettings.scenes.Length;
            float completedScenes = 0;
            foreach (EditorBuildSettingsScene S in EditorBuildSettings.scenes)
            {
                EditorUtility.DisplayProgressBar("Initializing", "Initializing Configuration Manager",
                                                 completedScenes / totalScenes);
                completedScenes++;
                if (S.enabled)
                {
                    string sceneId = "";
                    EditorSceneManager.OpenScene(S.path);
                    DataCollectionManager dataManager = UnityEngine.Object.FindObjectOfType <DataCollectionManager>();
                    if (dataManager != null)
                    {
                        // Prefill App Id and App Token of already present.
                        if (dataManager.sceneId != null)
                        {
                            sceneId = dataManager.sceneId;
                        }
                        if (appId.Length == 0 && dataManager.appId != null)
                        {
                            appId = dataManager.appId;
                        }
                        if (appToken.Length == 0 && dataManager.appToken != null)
                        {
                            appToken = dataManager.appToken;
                        }
                        if (testMode)
                        {
                            testMode = dataManager.testMode;
                        }
                        if (!dataManager.periodicSendFlag)
                        {
                            periodicSendFlag = dataManager.periodicSendFlag;
                        }
                        if (!dataManager.pauseSendFlag)
                        {
                            pauseSendFlag = dataManager.pauseSendFlag;
                        }
                        if (!dataManager.pauseOnHeadsetRemoval)
                        {
                            pauseOnHeadsetRemoval = dataManager.pauseOnHeadsetRemoval;
                        }
                        // Getting already attached event scripts data.
                        GameObject gameobject = dataManager.gameObject;
                        if (gameobject != null)
                        {
                            for (int i = 0; i < eventCollectors.Count; i++)
                            {
                                IEventCollector collector = gameobject.GetComponent(eventCollectors[i].collector) as IEventCollector;
                                if (collector != null)
                                {
                                    eventCollectors[i].enable = true;
                                    if ((collector.getTimeInterval() < eventCollectors[i].timeInterval) || (eventCollectors[i].timeInterval < 0))
                                    {
                                        eventCollectors[i].timeInterval = collector.getTimeInterval();
                                    }
                                }
                            }
                        }
                    }
                    vadrScenes.Add(new VadrScene(S.path, sceneId));
                }
            }
            for (int i = 0; i < eventCollectors.Count; i++)
            {
                if (eventCollectors[i].timeInterval < 0)
                {
                    eventCollectors[i].timeInterval = 0.2f;
                }
            }
            if (currentPath.Length > 0)
            {
                EditorSceneManager.OpenScene(currentPath);
            }
            EditorUtility.ClearProgressBar();
            ConfigurationManager.Init(vadrScenes, eventCollectors, appId, appToken, testMode,
                                      periodicSendFlag, pauseSendFlag, pauseOnHeadsetRemoval);
            ConfigurationManager.ShowWindow();
        }
    }
예제 #16
0
 private void Start()
 {
     rLExperimentParameters = new RLExperimentParameters((float)0.6, (float)1.0, 5);
     dataCollectionManager  = new DataCollectionManager();
 }