├── docker
├── Dockerfile.Linux
├── scripts
│ ├── Add-InternalNugetFeed.ps1
│ └── Packaging
│ │ └── generate-update-package.ps1
└── Dockerfile
├── scripts
└── Unicorn
│ ├── MicroCHAP.dll
│ └── Sync.ps1
├── src
├── Colossus.Integration
│ ├── Colossus.ashx
│ ├── Models
│ │ ├── ExmEvent.cs
│ │ ├── PageDefinition.cs
│ │ ├── RenderingInfo.cs
│ │ └── SitecoreVisitContext.cs
│ ├── Processing
│ │ ├── RequestAction.cs
│ │ ├── TriggerEventData.cs
│ │ ├── TriggerOutcomeData.cs
│ │ ├── ISessionPatcher.cs
│ │ ├── ChannelPatcher.cs
│ │ ├── RequestInfoHelpers.cs
│ │ ├── GeoPatcher.cs
│ │ ├── TimePatcher.cs
│ │ └── TriggerEventsAction.cs
│ ├── ColossusHandler.cs
│ ├── Behaviors
│ │ └── SitecoreBehavior.cs
│ ├── Properties
│ │ ├── PublishProfiles
│ │ │ └── local.pubxml
│ │ └── AssemblyInfo.cs
│ ├── App_Config
│ │ └── Include
│ │ │ └── Colossus
│ │ │ └── Colossus.config
│ ├── web.Debug.config
│ └── web.Release.config
├── ExperienceGenerator.Client
│ ├── Icon
│ │ ├── Original.png
│ │ ├── ExperienceGenerator.zip
│ │ └── ExperienceGenerator
│ │ │ ├── 16x16
│ │ │ └── Experience Generator.png
│ │ │ ├── 24x24
│ │ │ └── Experience Generator.png
│ │ │ ├── 32x32
│ │ │ └── Experience Generator.png
│ │ │ └── 48x48
│ │ │ └── Experience Generator.png
│ ├── Mapping
│ │ ├── Mapping.zip
│ │ └── test.htm
│ ├── Global.asax
│ ├── sitecore
│ │ └── shell
│ │ │ └── Themes
│ │ │ └── Standard
│ │ │ └── ExperienceGenerator.zip
│ ├── Models
│ │ ├── ContactPreset.cs
│ │ ├── OptionTypes.cs
│ │ ├── SelectionOptionGroup.cs
│ │ ├── Preset.cs
│ │ ├── SelectionOption.cs
│ │ └── ConfigurationOptions.cs
│ ├── App_Config
│ │ └── Include
│ │ │ ├── ExperienceGenerator
│ │ │ ├── zExperienceGenerator.DevSettings.config
│ │ │ └── ExperienceGenerator.Serialization.config
│ │ │ └── Unicorn
│ │ │ ├── Unicorn.PowerShell.config
│ │ │ ├── Unicorn.UI.IdentityServer.config
│ │ │ ├── Unicorn.zSharedSecret.config
│ │ │ ├── Unicorn.Users.DataProvider.config
│ │ │ ├── Unicorn.DataProvider.config
│ │ │ └── Unicorn.Roles.DataProvider.config
│ ├── Infrastructure
│ │ ├── SitecoreRouteInitializer.cs
│ │ └── XGenSitecoreJobManager.cs
│ ├── Global.asax.cs
│ ├── Templates.cs
│ ├── KnownItems.cs
│ ├── Properties
│ │ ├── PublishProfiles
│ │ │ └── local.pubxml
│ │ └── AssemblyInfo.cs
│ ├── Repositories
│ │ └── ContactSettingsRepository.cs
│ ├── App_Start
│ │ └── WebApiConfig.cs
│ ├── Web.Debug.config
│ └── Web.Release.config
├── ExperienceGenerator
│ ├── Data
│ │ ├── CountriesByContinent.txt
│ │ ├── Continent.cs
│ │ ├── Region.cs
│ │ ├── Device.cs
│ │ ├── FileHelpers.cs
│ │ └── DeviceRepository.cs
│ ├── JobType.cs
│ ├── Models
│ │ ├── PageItemInfo.cs
│ │ ├── SiteInfo.cs
│ │ ├── JsonItemInfo.cs
│ │ └── Interaction.cs
│ ├── Parsing
│ │ ├── JsonHelpers.cs
│ │ ├── ParseConfig.cs
│ │ └── Factories
│ │ │ ├── VariableFactory.cs
│ │ │ ├── LambdaFactory.cs
│ │ │ ├── ContactDataVariable.cs
│ │ │ ├── OutcomeVariable.cs
│ │ │ ├── MonthFactory.cs
│ │ │ └── IdentifiedContactDataVariable.cs
│ ├── JobSpecification.cs
│ ├── Services
│ │ └── GetRandomCityService.cs
│ ├── Repositories
│ │ └── GeoDataRepository.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ └── app.config
├── Colossus
│ ├── Statistics
│ │ ├── IRandomGenerator.cs
│ │ ├── DateRangeNotInitializedException.cs
│ │ ├── PoissonGenerator.cs
│ │ ├── LambdaGenerator.cs
│ │ ├── TransformedRandom.cs
│ │ ├── BetaGenerator.cs
│ │ ├── WignerGenerator.cs
│ │ ├── NormalGenerator.cs
│ │ ├── WeightedRandom.cs
│ │ ├── SkewNormalGenerator.cs
│ │ ├── TruncatedRandom.cs
│ │ ├── OffsetGenerator.cs
│ │ ├── MathNetGenerator.cs
│ │ ├── WeightedSetBuilder.cs
│ │ ├── NoiseHelper.cs
│ │ ├── LinearGenerator.cs
│ │ └── ExponentialGenerator.cs
│ ├── IVisitSimulator.cs
│ ├── IVisitorBehavior.cs
│ ├── Request.cs
│ ├── IRequestContext.cs
│ ├── Web
│ │ ├── RequestEventArgs.cs
│ │ ├── VisitEventArgs.cs
│ │ ├── VisitInfo.cs
│ │ ├── VisitorInfo.cs
│ │ ├── SimulationObjectInfo.cs
│ │ ├── RequestInfo.cs
│ │ └── ResponseInfo.cs
│ ├── Randomness.cs
│ ├── IVisitRequestContext.cs
│ ├── SimulationObject.cs
│ ├── ContactBasedSimulator.cs
│ ├── Visitor.cs
│ ├── VisitorSegment.cs
│ ├── CompositeVariable.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── SegmentBasedSimulator.cs
│ ├── GetSetHelpers.cs
│ └── Visit.cs
├── ExperienceGenerator.Exm
│ ├── sitecore
│ │ ├── EndSession.aspx
│ │ ├── EndSession.aspx.cs
│ │ ├── EndSession.aspx.designer.cs
│ │ └── shell
│ │ │ └── client
│ │ │ └── Applications
│ │ │ └── ExmExperienceGenerator
│ │ │ └── DataRepository.js
│ ├── Models
│ │ ├── Preset.cs
│ │ ├── ListSettings.cs
│ │ ├── ExmGeneratorSettings.cs
│ │ ├── SelectionOptionGroup.cs
│ │ ├── MessageContactEvent.cs
│ │ ├── RequestHeaderInfo.cs
│ │ ├── SelectionOption.cs
│ │ ├── Funnel.cs
│ │ ├── CampaignSettings.cs
│ │ └── MessageContactEvents.cs
│ ├── Services
│ │ ├── EventType.cs
│ │ └── IndexService.cs
│ ├── Infrastructure
│ │ ├── SitecoreRouteInitializer.cs
│ │ ├── LinqExtensions.cs
│ │ └── UpdateFakeGeoData.cs
│ ├── App_Config
│ │ └── Include
│ │ │ ├── Z.ExperienceGenerator
│ │ │ └── zExperienceGenerator.Exm.DevSettings.config
│ │ │ └── ExperienceGenerator
│ │ │ └── ExmExperienceGenerator.Serialization.config
│ ├── Templates.cs
│ ├── Properties
│ │ ├── PublishProfiles
│ │ │ └── local.pubxml
│ │ └── AssemblyInfo.cs
│ └── App_Start
│ │ └── WebApiConfig.cs
├── publishsettings.targets
├── serialization
│ ├── ExperienceGenerator
│ │ ├── ExperienceGenerator.Core.Application
│ │ │ ├── ExperienceGenerator.yml
│ │ │ ├── ExperienceGenerator
│ │ │ │ ├── Common.yml
│ │ │ │ ├── Common
│ │ │ │ │ ├── Presets.yml
│ │ │ │ │ ├── Contacts.yml
│ │ │ │ │ ├── Templates.yml
│ │ │ │ │ └── Templates
│ │ │ │ │ │ ├── Settings Preset.yml
│ │ │ │ │ │ └── Settings Preset
│ │ │ │ │ │ ├── Data.yml
│ │ │ │ │ │ └── Data
│ │ │ │ │ │ └── Specification.yml
│ │ │ │ ├── Contacts
│ │ │ │ │ └── PageSettings
│ │ │ │ │ │ ├── Lists.yml
│ │ │ │ │ │ ├── Sliders.yml
│ │ │ │ │ │ ├── DatePickers.yml
│ │ │ │ │ │ ├── DialogWindows.yml
│ │ │ │ │ │ ├── SearchEngines.yml
│ │ │ │ │ │ ├── Texts
│ │ │ │ │ │ ├── Overview.yml
│ │ │ │ │ │ └── Overview
│ │ │ │ │ │ │ ├── End date.yml
│ │ │ │ │ │ │ ├── Start date.yml
│ │ │ │ │ │ │ ├── Pageviews per visit avg.yml
│ │ │ │ │ │ │ ├── Number of unique visitors.yml
│ │ │ │ │ │ │ ├── Time spent per visit avg.yml
│ │ │ │ │ │ │ ├── Annual increase in traffic.yml
│ │ │ │ │ │ │ └── Number of visits generated.yml
│ │ │ │ │ │ ├── Lists
│ │ │ │ │ │ ├── GoalListSettings.yml
│ │ │ │ │ │ ├── ContactListSettings.yml
│ │ │ │ │ │ ├── OutcomeListSettings.yml
│ │ │ │ │ │ ├── InteractionListSettings.yml
│ │ │ │ │ │ ├── ContactListSettings
│ │ │ │ │ │ │ ├── Email.yml
│ │ │ │ │ │ │ ├── FirstName.yml
│ │ │ │ │ │ │ └── LastName.yml
│ │ │ │ │ │ ├── GoalListSettings
│ │ │ │ │ │ │ └── Goal.yml
│ │ │ │ │ │ └── OutcomeListSettings
│ │ │ │ │ │ │ └── Outcome.yml
│ │ │ │ │ │ ├── SearchEngines
│ │ │ │ │ │ ├── Bing.yml
│ │ │ │ │ │ └── Google.yml
│ │ │ │ │ │ ├── DatePickers
│ │ │ │ │ │ └── DatePicker Parameters.yml
│ │ │ │ │ │ ├── Sliders
│ │ │ │ │ │ └── Slider Parameters.yml
│ │ │ │ │ │ └── Texts.yml
│ │ │ │ └── DataSheet
│ │ │ │ │ └── PageSettings
│ │ │ │ │ ├── Sliders.yml
│ │ │ │ │ ├── DatePickers.yml
│ │ │ │ │ ├── DialogWindows.yml
│ │ │ │ │ ├── Texts
│ │ │ │ │ ├── Overview.yml
│ │ │ │ │ └── Overview
│ │ │ │ │ │ ├── End date.yml
│ │ │ │ │ │ ├── Start date.yml
│ │ │ │ │ │ ├── Number of unique visitors.yml
│ │ │ │ │ │ ├── Pageviews per visit avg.yml
│ │ │ │ │ │ ├── Time spent per visit avg.yml
│ │ │ │ │ │ ├── Annual increase in traffic.yml
│ │ │ │ │ │ └── Number of visits generated.yml
│ │ │ │ │ ├── DatePickers
│ │ │ │ │ └── DatePicker Parameters.yml
│ │ │ │ │ ├── Sliders
│ │ │ │ │ └── Slider Parameters.yml
│ │ │ │ │ ├── Tabs.yml
│ │ │ │ │ └── Texts.yml
│ │ │ ├── 029018a9-f831-40a8-909f-720839afc078
│ │ │ │ └── Percentage identified visitors.yml
│ │ │ └── b389f826-532d-426e-97f5-416a43d12b22
│ │ │ │ └── Percentage identified visitors.yml
│ │ ├── ExperienceGenerator.Core.Application.Link
│ │ │ └── Experience Generator.yml
│ │ └── ExperienceGenerator.Core.Application.Contacts.Link
│ │ │ └── Contact Experience Generator.yml
│ └── ExmExperienceGenerator
│ │ ├── ExmExperienceGenerator.Core.Application
│ │ ├── ExmExperienceGenerator.yml
│ │ ├── ExmExperienceGenerator
│ │ │ ├── Common.yml
│ │ │ ├── Common
│ │ │ │ ├── Presets.yml
│ │ │ │ ├── Templates.yml
│ │ │ │ └── Templates
│ │ │ │ │ ├── Settings Preset.yml
│ │ │ │ │ └── Settings Preset
│ │ │ │ │ ├── Data.yml
│ │ │ │ │ └── Data
│ │ │ │ │ └── Specification.yml
│ │ │ └── ExmGenerator
│ │ │ │ └── PageSettings
│ │ │ │ ├── DatePickers.yml
│ │ │ │ ├── Texts
│ │ │ │ ├── Overview.yml
│ │ │ │ ├── Overview
│ │ │ │ │ ├── End date.yml
│ │ │ │ │ └── Start date.yml
│ │ │ │ └── Test summary.yml
│ │ │ │ ├── List.yml
│ │ │ │ ├── Dialogs.yml
│ │ │ │ ├── Sliders.yml
│ │ │ │ ├── DialogWindows.yml
│ │ │ │ ├── DatePickers
│ │ │ │ └── DatePicker Parameters.yml
│ │ │ │ ├── List
│ │ │ │ ├── Sent Messages.yml
│ │ │ │ └── Sent Messages
│ │ │ │ │ ├── Open rate.yml
│ │ │ │ │ ├── Recipients.yml
│ │ │ │ │ ├── Campaign name.yml
│ │ │ │ │ └── Subject.yml
│ │ │ │ └── Sliders
│ │ │ │ └── Slider Parameters.yml
│ │ ├── dac931a8-8851-4ddd-b96b-94d06b8714db
│ │ │ └── PageSettings
│ │ │ │ └── Tabs.yml
│ │ └── 63f091f4-1812-4987-adfe-5a3a917b1722
│ │ │ └── Number of visits generated.yml
│ │ └── ExmExperienceGenerator.Core.Button
│ │ └── Exm Experience Generator.yml
└── Api doc.txt
├── tools
└── packages.config
├── .env
├── .vscode
└── settings.json
├── .editorconfig
├── docker-compose.linux.yml
├── cake-config.json
├── nuget.config
├── docker-compose.yml
└── appveyor.yml
/docker/Dockerfile.Linux:
--------------------------------------------------------------------------------
1 | # escape=`
2 |
3 | ARG BASE_IMAGE
4 |
5 | FROM $BASE_IMAGE
6 |
7 | COPY docker/data/ .
--------------------------------------------------------------------------------
/scripts/Unicorn/MicroCHAP.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Sitecore/xGenerator/HEAD/scripts/Unicorn/MicroCHAP.dll
--------------------------------------------------------------------------------
/src/Colossus.Integration/Colossus.ashx:
--------------------------------------------------------------------------------
1 | <%@ WebHandler Language="C#" Class="Colossus.Integration.ColossusHandler" %>
--------------------------------------------------------------------------------
/tools/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/.env:
--------------------------------------------------------------------------------
1 | SITECORE_VERSION=10.1.0
2 | ISOLATION=process
3 | REGISTRY=scr.sitecore.com/
4 | WINDOWSSERVERCORE_VERSION=20H2
5 | NANOSERVER_VERSION=20H2
6 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Client/Icon/Original.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Sitecore/xGenerator/HEAD/src/ExperienceGenerator.Client/Icon/Original.png
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Client/Mapping/Mapping.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Sitecore/xGenerator/HEAD/src/ExperienceGenerator.Client/Mapping/Mapping.zip
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Client/Global.asax:
--------------------------------------------------------------------------------
1 | <%@ Application Codebehind="Global.asax.cs" Inherits="ExperienceGenerator.Client.WebApiApplication" Language="C#" %>
2 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator/Data/CountriesByContinent.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Sitecore/xGenerator/HEAD/src/ExperienceGenerator/Data/CountriesByContinent.txt
--------------------------------------------------------------------------------
/src/ExperienceGenerator/JobType.cs:
--------------------------------------------------------------------------------
1 | namespace ExperienceGenerator
2 | {
3 | public enum JobType
4 | {
5 | Visits = 0,
6 | Contacts = 1
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Client/Icon/ExperienceGenerator.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Sitecore/xGenerator/HEAD/src/ExperienceGenerator.Client/Icon/ExperienceGenerator.zip
--------------------------------------------------------------------------------
/src/Colossus/Statistics/IRandomGenerator.cs:
--------------------------------------------------------------------------------
1 | namespace Colossus.Statistics
2 | {
3 | public interface IRandomGenerator
4 | {
5 | double Next();
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Exm/sitecore/EndSession.aspx:
--------------------------------------------------------------------------------
1 | <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="EndSession.aspx.cs" Inherits="ExperienceGenerator.Exm.sitecore.EndSession" %>
2 |
--------------------------------------------------------------------------------
/src/Colossus/IVisitSimulator.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace Colossus
4 | {
5 | public interface IVisitSimulator
6 | {
7 | IEnumerable GetVisitors(int count);
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Client/Icon/ExperienceGenerator/16x16/Experience Generator.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Sitecore/xGenerator/HEAD/src/ExperienceGenerator.Client/Icon/ExperienceGenerator/16x16/Experience Generator.png
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Client/Icon/ExperienceGenerator/24x24/Experience Generator.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Sitecore/xGenerator/HEAD/src/ExperienceGenerator.Client/Icon/ExperienceGenerator/24x24/Experience Generator.png
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Client/Icon/ExperienceGenerator/32x32/Experience Generator.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Sitecore/xGenerator/HEAD/src/ExperienceGenerator.Client/Icon/ExperienceGenerator/32x32/Experience Generator.png
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Client/Icon/ExperienceGenerator/48x48/Experience Generator.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Sitecore/xGenerator/HEAD/src/ExperienceGenerator.Client/Icon/ExperienceGenerator/48x48/Experience Generator.png
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Client/sitecore/shell/Themes/Standard/ExperienceGenerator.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Sitecore/xGenerator/HEAD/src/ExperienceGenerator.Client/sitecore/shell/Themes/Standard/ExperienceGenerator.zip
--------------------------------------------------------------------------------
/src/Colossus/IVisitorBehavior.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace Colossus
4 | {
5 | public interface IVisitorBehavior
6 | {
7 | IEnumerable Commit(Visitor visitor);
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Exm/Models/Preset.cs:
--------------------------------------------------------------------------------
1 | using Newtonsoft.Json.Linq;
2 |
3 | namespace ExperienceGenerator.Exm.Models
4 | {
5 | public class Preset
6 | {
7 | public string Name { get; set; }
8 |
9 | public JObject Spec { get; set; }
10 | }
11 | }
--------------------------------------------------------------------------------
/src/Colossus.Integration/Models/ExmEvent.cs:
--------------------------------------------------------------------------------
1 | namespace Colossus.Integration.Models
2 | {
3 | public enum ExmEvent
4 | {
5 | Open,
6 | Click,
7 | Unsubscribe,
8 | UnsubscribeFromAll,
9 | Spam,
10 | Bounce
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "json.maxItemsComputed": 15000,
3 | "[json]": {
4 | "editor.defaultFormatter": "esbenp.prettier-vscode"
5 | },
6 | "files.associations": {
7 | "build*.yml": "azure-pipelines",
8 | "docker*.yml": "yaml"
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Client/Models/ContactPreset.cs:
--------------------------------------------------------------------------------
1 | using Newtonsoft.Json.Linq;
2 |
3 | namespace ExperienceGenerator.Client.Models
4 | {
5 |
6 | public class ContactPreset
7 | {
8 | public string Name { get; set; }
9 |
10 | public JArray Spec { get; set; }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Exm/Models/ListSettings.cs:
--------------------------------------------------------------------------------
1 | namespace ExperienceGenerator.Exm.Models
2 | {
3 | public class ListSettings
4 | {
5 | public string Name { get; set; }
6 | public int Recipients { get; set; }
7 | public Job Job { get; set; }
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Exm/Services/EventType.cs:
--------------------------------------------------------------------------------
1 | namespace ExperienceGenerator.Exm.Services
2 | {
3 | public enum EventType
4 | {
5 | Open,
6 | Unsubscribe,
7 | UnsubscribeFromAll,
8 | Click,
9 | Bounce,
10 | SpamComplaint
11 | }
12 | }
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Exm/Models/ExmGeneratorSettings.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 | namespace ExperienceGenerator.Exm.Models
5 | {
6 | public class ExmGeneratorSettings : Dictionary
7 | {
8 | public Job Job { get; set; }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | # EditorConfig is awesome: http://EditorConfig.org
2 |
3 | # top-most EditorConfig file
4 | root = true
5 |
6 | # Windows-style newlines with a newline ending every file
7 | # 4 spaces indentation
8 | [*]
9 | end_of_line = crlf
10 | insert_final_newline = true
11 | indent_style = space
12 | indent_size = 4
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Client/Models/OptionTypes.cs:
--------------------------------------------------------------------------------
1 | namespace ExperienceGenerator.Client.Models
2 | {
3 | using System.Collections.Generic;
4 |
5 | public class OptionTypes
6 | {
7 | public string Type { get; set; }
8 |
9 | public IEnumerable OptionGroups { get; set; }
10 | }
11 | }
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Client/App_Config/Include/ExperienceGenerator/zExperienceGenerator.DevSettings.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Client/Models/SelectionOptionGroup.cs:
--------------------------------------------------------------------------------
1 | namespace ExperienceGenerator.Client.Models
2 | {
3 | using System.Collections.Generic;
4 |
5 | public class SelectionOptionGroup
6 | {
7 | public string Label { get; set; }
8 |
9 | public IEnumerable Options { get; set; }
10 | }
11 | }
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Exm/Models/SelectionOptionGroup.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace ExperienceGenerator.Exm.Models
4 | {
5 | public class SelectionOptionGroup
6 | {
7 | public string Label { get; set; }
8 |
9 | public IEnumerable Options { get; set; }
10 | }
11 | }
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Exm/Models/MessageContactEvent.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using ExperienceGenerator.Exm.Services;
3 |
4 | namespace ExperienceGenerator.Exm.Models
5 | {
6 | public class MessageContactEvent
7 | {
8 | public DateTime EventTime { get; set; }
9 | public EventType EventType { get; set; }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/publishsettings.targets:
--------------------------------------------------------------------------------
1 |
2 |
3 | http://xgenerator.dev.local
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator/Models/PageItemInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using Newtonsoft.Json;
3 |
4 | namespace ExperienceGenerator.Models
5 | {
6 | public class PageItemInfo : JsonItemInfo
7 | {
8 | [JsonProperty("goals", Required = Required.Default)]
9 | public IEnumerable Goals { get; set; }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/docker-compose.linux.yml:
--------------------------------------------------------------------------------
1 | version: "2.4"
2 |
3 | services:
4 | xGenerator:
5 | image: ${REGISTRY}community/modules/custom-xgenerator-assets:${SITECORE_VERSION}-linux
6 | isolation: ${ISOLATION}
7 | build:
8 | context: .
9 | dockerfile: ./docker/Dockerfile.Linux
10 | args:
11 | BASE_IMAGE: docker.io/alpine:3
12 |
13 |
--------------------------------------------------------------------------------
/cake-config.json:
--------------------------------------------------------------------------------
1 | {
2 | "WebsiteRoot": "C:\\inetpub\\wwwroot\\xgenerator.dev.local",
3 | "InstanceUrl": "https://xgenerator.dev.local/",
4 | "SolutionName": "ExperienceGenerator.sln",
5 | "ProjectFolder": "C:\\projects\\xGenerator",
6 | "BuildConfiguration": "Debug",
7 | "BuildToolVersions": "VS2019",
8 | "RunCleanBuilds": false
9 | }
10 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Client/Models/Preset.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Web;
5 |
6 | namespace ExperienceGenerator.Client.Models
7 | {
8 | using Newtonsoft.Json.Linq;
9 |
10 | public class Preset
11 | {
12 | public string Name { get; set; }
13 |
14 | public JObject Spec { get; set; }
15 | }
16 | }
--------------------------------------------------------------------------------
/src/Colossus/Request.cs:
--------------------------------------------------------------------------------
1 | namespace Colossus
2 | {
3 | public class Request : SimulationObject
4 | {
5 | public Visit Visit { get; set; }
6 |
7 | public string Url { get; set; }
8 |
9 | public string Method { get; set; }
10 |
11 | public string PostData { get; set; }
12 |
13 | public bool EndVisit { get; set; }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Client/Models/SelectionOption.cs:
--------------------------------------------------------------------------------
1 | namespace ExperienceGenerator.Client.Models
2 | {
3 | public class SelectionOption
4 | {
5 | public string Id { get; set; }
6 | public string Label { get; set; }
7 | public double DefaultWeight { get; set; }
8 |
9 | public SelectionOption()
10 | {
11 | this.DefaultWeight = 50;
12 | }
13 | }
14 | }
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Exm/Models/RequestHeaderInfo.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Sitecore.CES.GeoIp.Core.Model;
3 |
4 | namespace ExperienceGenerator.Exm.Models
5 | {
6 | public class RequestHeaderInfo
7 | {
8 | public string UserAgent { get; set; }
9 | public DateTime? RequestTime { get; set; }
10 | public WhoIsInformation GeoData { get; set; }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Exm/Infrastructure/SitecoreRouteInitializer.cs:
--------------------------------------------------------------------------------
1 | using System.Web.Http;
2 | using Sitecore.Pipelines;
3 |
4 | namespace ExperienceGenerator.Exm.Infrastructure
5 | {
6 | public class SitecoreRouteInitializer
7 | {
8 | public void Process(PipelineArgs args)
9 | {
10 | GlobalConfiguration.Configure(WebApiConfig.Register);
11 | }
12 | }
13 | }
--------------------------------------------------------------------------------
/src/ExperienceGenerator/Models/SiteInfo.cs:
--------------------------------------------------------------------------------
1 | namespace ExperienceGenerator.Models
2 | {
3 | public class SiteInfo
4 | {
5 | public string Id { get; set; }
6 |
7 | public string Host { get; set; }
8 |
9 | public string StartPath { get; set; }
10 |
11 | public string Label { get; set; }
12 |
13 | public string Database { get; set; }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Exm/Models/SelectionOption.cs:
--------------------------------------------------------------------------------
1 | namespace ExperienceGenerator.Exm.Models
2 | {
3 | public class SelectionOption
4 | {
5 | public string Id { get; set; }
6 | public string Label { get; set; }
7 | public double DefaultWeight { get; set; }
8 |
9 | public SelectionOption()
10 | {
11 | DefaultWeight = 50;
12 | }
13 | }
14 | }
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Client/Infrastructure/SitecoreRouteInitializer.cs:
--------------------------------------------------------------------------------
1 | using System.Web.Http;
2 | using Sitecore.Pipelines;
3 |
4 | namespace ExperienceGenerator.Client.Infrastructure
5 | {
6 | public class SitecoreRouteInitializer
7 | {
8 |
9 | public void Process(PipelineArgs args)
10 | {
11 | GlobalConfiguration.Configure(WebApiConfig.Register);
12 | }
13 | }
14 | }
--------------------------------------------------------------------------------
/src/Colossus.Integration/Models/PageDefinition.cs:
--------------------------------------------------------------------------------
1 | namespace Colossus.Integration.Models
2 | {
3 | using System.Collections.Generic;
4 |
5 | public class PageDefinition
6 | {
7 | public PageDefinition()
8 | {
9 | this.RequestVariables = new Dictionary();
10 | }
11 | public string Path { get; set; }
12 | public Dictionary RequestVariables { get; set; }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/Colossus/IRequestContext.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Colossus.Web;
3 |
4 | namespace Colossus
5 | {
6 | public interface IRequestContext
7 | where TResponseInfo : ResponseInfo
8 | {
9 | Visitor Visitor { get; }
10 |
11 | void Pause(TimeSpan duration);
12 |
13 | IVisitRequestContext NewVisit();
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Exm/App_Config/Include/Z.ExperienceGenerator/zExperienceGenerator.Exm.DevSettings.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Client/Mapping/test.htm:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Exm/Templates.cs:
--------------------------------------------------------------------------------
1 | namespace ExperienceGenerator.Exm
2 | {
3 | using Sitecore.Data;
4 | public static class Templates
5 | {
6 | public struct Preset
7 | {
8 | public static ID ID = new ID("{BA1D3932-28BA-4CC3-9527-38AFC8B529C4}");
9 |
10 | public struct Fields
11 | {
12 | public static readonly ID Specification = new ID("{387FB35F-D93F-47ED-A7B3-48B070B28297}");
13 | }
14 | }
15 | }
16 | }
--------------------------------------------------------------------------------
/src/Colossus/Web/RequestEventArgs.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Colossus.Web
8 | {
9 | public class RequestEventArgs : EventArgs
10 | {
11 | public Request Request { get; private set; }
12 |
13 | public RequestEventArgs(Request request)
14 | {
15 | Request = request;
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator/Data/Continent.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using ExperienceGenerator.Repositories;
5 | using Sitecore.Analytics.Model;
6 |
7 | namespace ExperienceGenerator.Data
8 | {
9 | public class Continent
10 | {
11 | public string Code { get; set; }
12 | public string Name { get; set; }
13 | public IEnumerable SubContinents { get; set; }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/Colossus/Web/VisitEventArgs.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.CodeDom;
3 | using System.Collections.Generic;
4 | using System.Linq;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace Colossus.Web
9 | {
10 | public class VisitEventArgs : EventArgs
11 | {
12 | public Visit Visit { get; private set; }
13 |
14 | public VisitEventArgs(Visit visit)
15 | {
16 | Visit = visit;
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/src/Colossus/Statistics/DateRangeNotInitializedException.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Colossus.Statistics
8 | {
9 | public class DateRangeNotInitializedException : ApplicationException
10 | {
11 | public DateRangeNotInitializedException() : base("Date range not initialized")
12 | {
13 |
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Colossus/Web/VisitInfo.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Colossus.Web
8 | {
9 | public class VisitInfo : SimulationObjectInfo
10 | {
11 | public static VisitInfo FromVisit(Visit visit)
12 | {
13 | var info = new VisitInfo();
14 | info.SetValuesFromObject(visit);
15 | return info;
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/Colossus.Integration/Processing/RequestAction.cs:
--------------------------------------------------------------------------------
1 | using Colossus.Web;
2 | using Sitecore.Analytics;
3 |
4 | namespace Colossus.Integration.Processing
5 | {
6 | ///
7 | /// Classes implementing this interface are executed just before the page is rendered
8 | /// This is the right place to trigger events, outcomes etc.
9 | ///
10 | public interface IRequestAction
11 | {
12 | void Execute(ITracker tracker, RequestInfo requestInfo);
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator/Models/JsonItemInfo.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Newtonsoft.Json;
3 |
4 | namespace ExperienceGenerator.Models
5 | {
6 | public class JsonItemInfo
7 | {
8 |
9 | [JsonProperty("itemId")]
10 | public Guid Id { get; set; }
11 |
12 | [JsonProperty("$displayName", Required = Required.Default)]
13 | public string DisplayName { get; set; }
14 | [JsonProperty("path", Required = Required.Default)]
15 |
16 | public string Path { get; set; }
17 |
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Exm/sitecore/EndSession.aspx.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Web;
3 | using Sitecore.Analytics;
4 |
5 | namespace ExperienceGenerator.Exm.sitecore
6 | {
7 | public partial class EndSession : System.Web.UI.Page
8 | {
9 | protected void Page_Load(object sender, EventArgs e)
10 | {
11 | if (Tracker.Current != null)
12 | Tracker.Current.EndVisit(true);
13 | HttpContext.Current.Session.Abandon();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "340e8e4c-74fc-4ca8-8aad-795300882384"
3 | Parent: "9cbe9270-1377-48cc-87b6-263f4c705c7d"
4 | Template: "a87a00b1-e6db-45ab-8b54-636fec3b5523"
5 | Path: /sitecore/client/Applications/ExperienceGenerator
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20150505T084148Z
15 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Client/Global.asax.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Web;
5 | using System.Web.Http;
6 | using System.Web.Routing;
7 | using ExperienceGenerator.Client;
8 |
9 | namespace ExperienceGenerator
10 | {
11 | public class WebApiApplication : System.Web.HttpApplication
12 | {
13 | protected void Application_Start()
14 | {
15 | GlobalConfiguration.Configure(WebApiConfig.Register);
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/Colossus.Integration/Processing/TriggerEventData.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 | namespace Colossus.Integration.Processing
5 | {
6 | public class TriggerEventData
7 | {
8 | public Guid? Id { get; set; }
9 | public string Name { get; set; }
10 | public string Text { get; set; }
11 | public int? Value { get; set; }
12 | public bool IsGoal { get; set; }
13 |
14 | public Dictionary CustomValues { get; set; }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/docker/scripts/Add-InternalNugetFeed.ps1:
--------------------------------------------------------------------------------
1 |
2 | if (-not ([string]::IsNullOrEmpty($env:INTERNAL_NUGET_SOURCE) -or [string]::IsNullOrEmpty($env:INTERNAL_NUGET_SOURCE_USERNAME) -or [string]::IsNullOrEmpty($env:INTERNAL_NUGET_SOURCE_PASSWORD))) {
3 | Write-Host "Adding internal nuget source"
4 | dotnet nuget add source "$($env:INTERNAL_NUGET_SOURCE)" --name "sc-internal-package-feed" --username "$($env:INTERNAL_NUGET_SOURCE_USERNAME)" --password "$($env:INTERNAL_NUGET_SOURCE_PASSWORD)" --configfile "nuget.config" --store-password-in-clear-text
5 | }
--------------------------------------------------------------------------------
/src/Colossus.Integration/Models/RenderingInfo.cs:
--------------------------------------------------------------------------------
1 | namespace Colossus.Integration.Models
2 | {
3 | public class RenderingInfo
4 | {
5 |
6 | public ItemInfo Item { get; set; }
7 |
8 | public string Conditions { get; set; }
9 | public string DataSource { get; set; }
10 | public string MultiVariateTest { get; set; }
11 | public string Parameters { get; set; }
12 | public string PersonalizationTest { get; set; }
13 | public string Placeholder { get; set; }
14 |
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/serialization/ExmExperienceGenerator/ExmExperienceGenerator.Core.Application/ExmExperienceGenerator.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "f67c6d31-3d39-4cc3-9153-4809b31c099c"
3 | Parent: "9cbe9270-1377-48cc-87b6-263f4c705c7d"
4 | Template: "a87a00b1-e6db-45ab-8b54-636fec3b5523"
5 | Path: /sitecore/client/Applications/ExmExperienceGenerator
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20160725T132958Z
15 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/Common.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "94eee1ce-f99f-42a9-8cc3-43e7043286e5"
3 | Parent: "340e8e4c-74fc-4ca8-8aad-795300882384"
4 | Template: "a87a00b1-e6db-45ab-8b54-636fec3b5523"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/Common
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20160218T161030Z
15 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Exm/Models/Funnel.cs:
--------------------------------------------------------------------------------
1 | namespace ExperienceGenerator.Exm.Models
2 | {
3 | public class Funnel
4 | {
5 | public int OpenRate { get; set; }
6 | public int ClickRate { get; set; }
7 | public int Bounced { get; set; }
8 | public int Unsubscribed { get; set; }
9 | public int Delivered { get; set; }
10 | public int SpamComplaints { get; set; }
11 | //TODO - Warning: UnsubscribeFromAll not supported in UI
12 | public int UnsubscribedFromAll => 50;
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/serialization/ExmExperienceGenerator/ExmExperienceGenerator.Core.Application/ExmExperienceGenerator/Common.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "5d3d25bf-5f54-428c-b52e-a78a95dedf92"
3 | Parent: "f67c6d31-3d39-4cc3-9153-4809b31c099c"
4 | Template: "a87a00b1-e6db-45ab-8b54-636fec3b5523"
5 | Path: /sitecore/client/Applications/ExmExperienceGenerator/Common
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20160815T180542Z
15 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/Common/Presets.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "b4ef340e-be30-4959-a586-11ddf7c6f66c"
3 | Parent: "94eee1ce-f99f-42a9-8cc3-43e7043286e5"
4 | Template: "a87a00b1-e6db-45ab-8b54-636fec3b5523"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/Common/Presets
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20160218T161948Z
15 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/Common/Contacts.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "ed72a22e-57b8-4da2-9b00-af77d25840e3"
3 | Parent: "94eee1ce-f99f-42a9-8cc3-43e7043286e5"
4 | Template: "a87a00b1-e6db-45ab-8b54-636fec3b5523"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/Common/Contacts
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20160218T161948Z
15 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/Common/Templates.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "30bac1eb-8d67-4837-8393-12b29b2ff2cd"
3 | Parent: "94eee1ce-f99f-42a9-8cc3-43e7043286e5"
4 | Template: "a87a00b1-e6db-45ab-8b54-636fec3b5523"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/Common/Templates
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20160218T161040Z
15 |
--------------------------------------------------------------------------------
/src/Colossus.Integration/Processing/TriggerOutcomeData.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Colossus.Integration.Processing
8 | {
9 | public class TriggerOutcomeData
10 | {
11 | public Guid DefinitionId { get; set; }
12 |
13 | public decimal MonetaryValue { get; set; }
14 |
15 | public DateTime? DateTime { get; set; }
16 |
17 | public Dictionary CustomValues { get; set; }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/src/serialization/ExmExperienceGenerator/ExmExperienceGenerator.Core.Application/ExmExperienceGenerator/Common/Presets.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "3a9f920b-2350-4088-b9a7-2dedfef1cbc9"
3 | Parent: "5d3d25bf-5f54-428c-b52e-a78a95dedf92"
4 | Template: "a87a00b1-e6db-45ab-8b54-636fec3b5523"
5 | Path: /sitecore/client/Applications/ExmExperienceGenerator/Common/Presets
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20160815T180607Z
15 |
--------------------------------------------------------------------------------
/src/serialization/ExmExperienceGenerator/ExmExperienceGenerator.Core.Application/ExmExperienceGenerator/Common/Templates.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "3fb06c33-1f02-4282-9036-6d0aca42342f"
3 | Parent: "5d3d25bf-5f54-428c-b52e-a78a95dedf92"
4 | Template: "a87a00b1-e6db-45ab-8b54-636fec3b5523"
5 | Path: /sitecore/client/Applications/ExmExperienceGenerator/Common/Templates
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20160815T185725Z
15 |
--------------------------------------------------------------------------------
/nuget.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/Colossus/Statistics/PoissonGenerator.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 | using MathNet.Numerics.Distributions;
7 |
8 | namespace Colossus.Statistics
9 | {
10 | public class PoissonGenerator : MathNetGenerator
11 | {
12 | public PoissonGenerator(double lambda, double scale = 1, double offset = 0) : base(new Poisson(lambda, Randomness.Random))
13 | {
14 | Scale = scale;
15 | Offset = offset;
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/Colossus.Integration/Processing/ISessionPatcher.cs:
--------------------------------------------------------------------------------
1 | using Colossus.Web;
2 | using Sitecore.Analytics.Tracking;
3 |
4 | namespace Colossus.Integration.Processing
5 | {
6 | ///
7 | /// Classes implementing this interface are run while the tracker is initialized, and before rules based on the session are executed
8 | /// This is the right place to set geo data, device type, referrer etc.
9 | ///
10 | public interface ISessionPatcher
11 | {
12 | void UpdateSession(Session session, RequestInfo requestInfo);
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Exm/sitecore/EndSession.aspx.designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | //
5 | // Changes to this file may cause incorrect behavior and will be lost if
6 | // the code is regenerated.
7 | //
8 | //------------------------------------------------------------------------------
9 |
10 | namespace ExperienceGenerator.Exm.sitecore {
11 |
12 |
13 | public partial class EndSession {
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/Contacts/PageSettings/Lists.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "2f9f25ef-9993-43c2-b28f-a056a31da6cc"
3 | Parent: "9d7fab6c-778a-460e-b6ee-508222174804"
4 | Template: "a87a00b1-e6db-45ab-8b54-636fec3b5523"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/Contacts/PageSettings/Lists
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20160311T093314Z
15 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/Contacts/PageSettings/Sliders.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "907285a5-619e-46b9-b7af-9a6f7bae76e1"
3 | Parent: "9d7fab6c-778a-460e-b6ee-508222174804"
4 | Template: "a87a00b1-e6db-45ab-8b54-636fec3b5523"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/Contacts/PageSettings/Sliders
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20150505T111032Z
15 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/DataSheet/PageSettings/Sliders.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "a77343c6-4986-4a87-a7b6-beb7f6219f6d"
3 | Parent: "eb911a25-00ff-465e-9794-c6046fb24a8f"
4 | Template: "a87a00b1-e6db-45ab-8b54-636fec3b5523"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/DataSheet/PageSettings/Sliders
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20150505T111032Z
15 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/Contacts/PageSettings/DatePickers.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "feff9e48-022b-4d74-8a30-335facd63d98"
3 | Parent: "9d7fab6c-778a-460e-b6ee-508222174804"
4 | Template: "a87a00b1-e6db-45ab-8b54-636fec3b5523"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/Contacts/PageSettings/DatePickers
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20150505T113940Z
15 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/DataSheet/PageSettings/DatePickers.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "e51c7489-9066-49f5-9146-d7fb5f814f74"
3 | Parent: "eb911a25-00ff-465e-9794-c6046fb24a8f"
4 | Template: "a87a00b1-e6db-45ab-8b54-636fec3b5523"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/DataSheet/PageSettings/DatePickers
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20150505T113940Z
15 |
--------------------------------------------------------------------------------
/src/Colossus/Statistics/LambdaGenerator.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Colossus.Statistics
8 | {
9 | public class LambdaGenerator : IRandomGenerator
10 | {
11 | private readonly Func _generator;
12 |
13 | public LambdaGenerator(Func generator)
14 | {
15 | _generator = generator;
16 | }
17 |
18 | public double Next()
19 | {
20 | return _generator();
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/Contacts/PageSettings/DialogWindows.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "98631609-7c98-49d8-8751-b779a8fd3a84"
3 | Parent: "9d7fab6c-778a-460e-b6ee-508222174804"
4 | Template: "a87a00b1-e6db-45ab-8b54-636fec3b5523"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/Contacts/PageSettings/DialogWindows
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20150507T133944Z
15 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/Contacts/PageSettings/SearchEngines.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "6f01950a-c49a-416e-8ed3-ee4cacc121b8"
3 | Parent: "9d7fab6c-778a-460e-b6ee-508222174804"
4 | Template: "a87a00b1-e6db-45ab-8b54-636fec3b5523"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/Contacts/PageSettings/SearchEngines
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20160316T100702Z
15 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/Contacts/PageSettings/Texts/Overview.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "029018a9-f831-40a8-909f-720839afc078"
3 | Parent: "5fdba48b-53b2-4e3d-80e6-7d36fa98fdd5"
4 | Template: "a87a00b1-e6db-45ab-8b54-636fec3b5523"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/Contacts/PageSettings/Texts/Overview
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20150505T105935Z
15 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/DataSheet/PageSettings/DialogWindows.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "a2c3f81e-d3c2-45c0-aba2-66cd7e69a50f"
3 | Parent: "eb911a25-00ff-465e-9794-c6046fb24a8f"
4 | Template: "a87a00b1-e6db-45ab-8b54-636fec3b5523"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/DataSheet/PageSettings/DialogWindows
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20150507T133944Z
15 |
--------------------------------------------------------------------------------
/src/Colossus/Randomness.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading;
6 | using System.Threading.Tasks;
7 |
8 | namespace Colossus
9 | {
10 | public class Randomness
11 | {
12 | private static ThreadLocal _random = new ThreadLocal(() => new Random());
13 |
14 | public static Random Random { get { return _random.Value; } }
15 |
16 | public static void Seed(int seed)
17 | {
18 | _random.Value = new Random(seed);
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/DataSheet/PageSettings/Texts/Overview.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "b389f826-532d-426e-97f5-416a43d12b22"
3 | Parent: "ae110b84-5964-4494-a84e-dd773d22307a"
4 | Template: "a87a00b1-e6db-45ab-8b54-636fec3b5523"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/DataSheet/PageSettings/Texts/Overview
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20150505T105935Z
15 |
--------------------------------------------------------------------------------
/src/serialization/ExmExperienceGenerator/ExmExperienceGenerator.Core.Application/ExmExperienceGenerator/ExmGenerator/PageSettings/DatePickers.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "ef512a36-365d-4c3a-8d23-80a7d09bfb92"
3 | Parent: "86e9eb14-9f9c-4edc-9cef-d6b590f1da8c"
4 | Template: "a87a00b1-e6db-45ab-8b54-636fec3b5523"
5 | Path: /sitecore/client/Applications/ExmExperienceGenerator/ExmGenerator/PageSettings/DatePickers
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20150505T113940Z
15 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/Contacts/PageSettings/Lists/GoalListSettings.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "b7def03c-dbe4-408b-bcd0-0404d3121af1"
3 | Parent: "2f9f25ef-9993-43c2-b28f-a056a31da6cc"
4 | Template: "88b6af7b-7253-471d-a644-12b81ef8f578"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/Contacts/PageSettings/Lists/GoalListSettings
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20160311T093340Z
15 |
--------------------------------------------------------------------------------
/src/serialization/ExmExperienceGenerator/ExmExperienceGenerator.Core.Application/ExmExperienceGenerator/ExmGenerator/PageSettings/Texts/Overview.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "63f091f4-1812-4987-adfe-5a3a917b1722"
3 | Parent: "08ad1b64-5c46-46a8-a643-c26397c5b8cc"
4 | Template: "a87a00b1-e6db-45ab-8b54-636fec3b5523"
5 | Path: /sitecore/client/Applications/ExmExperienceGenerator/ExmGenerator/PageSettings/Texts/Overview
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20150505T105935Z
15 |
--------------------------------------------------------------------------------
/src/Colossus/Web/VisitorInfo.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Colossus.Web
8 | {
9 | public class VisitorInfo : SimulationObjectInfo
10 | {
11 | public string SegmentName { get; set; }
12 |
13 | public static VisitorInfo FromVisitor(Visitor v)
14 | {
15 | var info = new VisitorInfo {SegmentName = v.Segment != null ? v.Segment.Name : null};
16 | info.SetValuesFromObject(v);
17 | return info;
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/Contacts/PageSettings/Lists/ContactListSettings.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "ad71adab-4f1d-4354-9bae-b89d97749200"
3 | Parent: "2f9f25ef-9993-43c2-b28f-a056a31da6cc"
4 | Template: "88b6af7b-7253-471d-a644-12b81ef8f578"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/Contacts/PageSettings/Lists/ContactListSettings
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20160311T093340Z
15 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/Contacts/PageSettings/Lists/OutcomeListSettings.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "153c2c22-1d9a-4527-8a7f-e5012f3c253c"
3 | Parent: "2f9f25ef-9993-43c2-b28f-a056a31da6cc"
4 | Template: "88b6af7b-7253-471d-a644-12b81ef8f578"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/Contacts/PageSettings/Lists/OutcomeListSettings
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20160311T093340Z
15 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/Contacts/PageSettings/Lists/InteractionListSettings.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "11c0a46e-4ea0-4f51-b74f-c54aa9ffc79a"
3 | Parent: "2f9f25ef-9993-43c2-b28f-a056a31da6cc"
4 | Template: "88b6af7b-7253-471d-a644-12b81ef8f578"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/Contacts/PageSettings/Lists/InteractionListSettings
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20160311T093340Z
15 |
--------------------------------------------------------------------------------
/src/Colossus.Integration/ColossusHandler.cs:
--------------------------------------------------------------------------------
1 | using System.Web;
2 | using System.Web.SessionState;
3 |
4 | namespace Colossus.Integration
5 | {
6 | public class ColossusHandler : IHttpHandler, IRequiresSessionState
7 | {
8 | public void ProcessRequest(HttpContext context)
9 | {
10 | var info = context.ColossusInfo();
11 | if (info != null && info.EndVisit)
12 | {
13 | context.Session.Abandon();
14 | }
15 | }
16 |
17 | public bool IsReusable
18 | {
19 | get { return false; }
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator/Data/Region.cs:
--------------------------------------------------------------------------------
1 | namespace ExperienceGenerator.Data
2 | {
3 | public class Region
4 | {
5 | public static Region FromCsv(string[] values)
6 | {
7 | var index = 0;
8 | return new Region
9 | {
10 | CountryCode = values[index++],
11 | RegionCode = values[index++],
12 | Name = values[index],
13 | };
14 | }
15 |
16 | public string Name { get; set; }
17 |
18 | public string RegionCode { get; set; }
19 |
20 | public string CountryCode { get; set; }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/serialization/ExmExperienceGenerator/ExmExperienceGenerator.Core.Application/dac931a8-8851-4ddd-b96b-94d06b8714db/PageSettings/Tabs.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "646e81f2-9c84-4d06-a409-7aa314d702ba"
3 | Parent: "d6cc328d-c7b2-4c87-a33d-ef0083fe3b32"
4 | Template: "a87a00b1-e6db-45ab-8b54-636fec3b5523"
5 | Path: /sitecore/client/Applications/ExmExperienceGenerator/ExmGenerator/PageSettings/Dialogs/EmailCampaignEditor/PageSettings/Tabs
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20160726T114312Z
15 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Client/Templates.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Web;
5 |
6 | namespace ExperienceGenerator.Client
7 | {
8 | using Sitecore.Data;
9 | using Sitecore.Shell.Framework.Commands.System;
10 |
11 | public static class Templates
12 | {
13 | public struct Preset
14 | {
15 | public static ID ID = new ID("{C7089EBD-7AF0-4F14-BEEA-680A465231B1}");
16 |
17 | public struct Fields
18 | {
19 | public static readonly ID Specification = new ID("{A0EE2080-2CC8-4DE0-8EFD-8E29CD39194F}");
20 | }
21 | }
22 |
23 |
24 | }
25 | }
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Exm/Models/CampaignSettings.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 | namespace ExperienceGenerator.Exm.Models
5 | {
6 | public class CampaignSettings
7 | {
8 | public IEnumerable DayDistribution { get; set; }
9 | public Dictionary Devices { get; set; }
10 | public DateTime StartDate { get; set; }
11 | public DateTime EndDate { get; set; }
12 | public Funnel Events { get; set; }
13 | public Dictionary LandingPages { get; set; }
14 | public Dictionary Locations { get; set; }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Colossus/IVisitRequestContext.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Net;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 | using Colossus.Web;
8 |
9 | namespace Colossus
10 | {
11 | public interface IVisitRequestContext : IDisposable
12 | where TResponseInfo : ResponseInfo
13 | {
14 | event EventHandler VisitEnded;
15 |
16 | Visit Visit { get; }
17 |
18 | void Pause(TimeSpan duration);
19 |
20 | TResponseInfo Request(string url, TimeSpan? duration = null, object variables = null);
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/Colossus/Statistics/TransformedRandom.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Colossus.Statistics
4 | {
5 | public class TransformedRandom : IRandomGenerator
6 | {
7 | public IRandomGenerator Generator { get; set; }
8 | public Func Transformation { get; set; }
9 |
10 | public TransformedRandom(IRandomGenerator generator, Func transformation)
11 | {
12 | Generator = generator;
13 | Transformation = transformation;
14 | }
15 |
16 | public double Next()
17 | {
18 | return Transformation(Generator.Next());
19 | }
20 | }
21 | }
--------------------------------------------------------------------------------
/src/Colossus/Web/SimulationObjectInfo.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 | namespace Colossus.Web
5 | {
6 | public abstract class SimulationObjectInfo
7 | {
8 | public IDictionary Variables { get; set; }
9 |
10 | public DateTime Start { get; set; }
11 | public DateTime End { get; set; }
12 |
13 | public void SetValuesFromObject(SimulationObject simObject)
14 | {
15 | Start = simObject.Start;
16 | End = simObject.End;
17 | Variables = simObject.Variables.GetSerializableVariables();
18 | }
19 |
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/src/Colossus/SimulationObject.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Colossus
8 | {
9 | public abstract class SimulationObject
10 | {
11 | public Dictionary Variables { get; private set; }
12 |
13 | public DateTime Start { get; set; }
14 | public DateTime End { get; set; }
15 |
16 | protected SimulationObject()
17 | {
18 | Start = DateTime.Now;
19 | End = DateTime.Now;
20 |
21 | Variables = new Dictionary();
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Exm/Models/MessageContactEvents.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using Sitecore.CES.GeoIp.Core.Model;
4 | using Sitecore.Modules.EmailCampaign.Messages;
5 |
6 | namespace ExperienceGenerator.Exm.Models
7 | {
8 | public class MessageContactEvents
9 | {
10 | public MessageItem MessageItem { get; set; }
11 | public Guid ContactId { get; set; }
12 | public string UserAgent { get; set; }
13 | public WhoIsInformation GeoData { get; set; }
14 | public string LandingPageUrl { get; set; }
15 | public IEnumerable Events { get; set; }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Client/KnownItems.cs:
--------------------------------------------------------------------------------
1 | namespace ExperienceGenerator.Client
2 | {
3 | using Sitecore.Data;
4 |
5 | public static class KnownItems
6 | {
7 | public static readonly ID ChannelsRoot = new ID("{F575D5E6-74DE-49B6-A866-E2256D213D83}");
8 | public static readonly ID OnlineChannelRoot = new ID("{D07286FA-67CE-4D66-8783-0140B8B91EF1}");
9 | public static readonly ID OutcomesRoot = new ID("{062A1E69-0BF6-4D6D-AC4F-C11D0F7DC1E1}");
10 | public static readonly ID CampaignsRoot = new ID("{EC095310-746F-4C1B-A73F-941863564DC2}");
11 | public static readonly ID TaxonomyRoot = new ID("{F0265697-7E06-4C39-81A6-A1CB98A41972}");
12 |
13 | }
14 |
15 | }
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Exm/Infrastructure/LinqExtensions.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 | namespace ExperienceGenerator.Exm.Infrastructure
5 | {
6 | public static class LinqExtensions
7 | {
8 | public static IEnumerable DistinctBy(this IEnumerable source, Func keySelector)
9 | {
10 | var knownKeys = new HashSet();
11 | foreach (var element in source)
12 | {
13 | if (knownKeys.Add(keySelector(element)))
14 | {
15 | yield return element;
16 | }
17 | }
18 | }
19 | }
20 | }
--------------------------------------------------------------------------------
/src/Colossus.Integration/Behaviors/SitecoreBehavior.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using Colossus.Integration.Models;
3 |
4 | namespace Colossus.Integration.Behaviors
5 | {
6 |
7 | public abstract class SitecoreBehavior : IVisitorBehavior
8 | {
9 | public string SitecoreUrl { get; set; }
10 |
11 | protected SitecoreBehavior(string sitecoreUrl)
12 | {
13 | this.SitecoreUrl = sitecoreUrl;
14 | }
15 |
16 | public IEnumerable Commit(Visitor visitor)
17 | {
18 | return this.Commit(new SitecoreRequestContext(this.SitecoreUrl, visitor));
19 | }
20 |
21 | protected abstract IEnumerable Commit(SitecoreRequestContext ctx);
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/serialization/ExmExperienceGenerator/ExmExperienceGenerator.Core.Application/ExmExperienceGenerator/ExmGenerator/PageSettings/List.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "5f825ecc-ddf8-4f6d-8465-6360123488da"
3 | Parent: "86e9eb14-9f9c-4edc-9cef-d6b590f1da8c"
4 | Template: "a87a00b1-e6db-45ab-8b54-636fec3b5523"
5 | Path: /sitecore/client/Applications/ExmExperienceGenerator/ExmGenerator/PageSettings/List
6 | DB: core
7 | SharedFields:
8 | - ID: "ba3f86a2-4a1c-4d78-b63d-91c2779c1b5e"
9 | Hint: __Sortorder
10 | Value: 400
11 | Languages:
12 | - Language: en
13 | Versions:
14 | - Version: 1
15 | Fields:
16 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
17 | Hint: __Created
18 | Value: 20160726T084149Z
19 |
--------------------------------------------------------------------------------
/src/Colossus/Statistics/BetaGenerator.cs:
--------------------------------------------------------------------------------
1 | using MathNet.Numerics.Distributions;
2 |
3 | namespace Colossus.Statistics
4 | {
5 | public class BetaGenerator : IRandomGenerator
6 | {
7 | public double Scale { get; set; }
8 | public double Offset { get; set; }
9 | private Beta _beta;
10 |
11 | public BetaGenerator(double a, double b, double scale = 1, double offset = 0)
12 | {
13 | Scale = scale;
14 | Offset = offset;
15 | _beta = new Beta(a, b, Randomness.Random);
16 | }
17 |
18 | public double Next()
19 | {
20 | return _beta.Sample()*Scale + Offset;
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/serialization/ExmExperienceGenerator/ExmExperienceGenerator.Core.Application/ExmExperienceGenerator/ExmGenerator/PageSettings/Dialogs.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "5ed8b01f-2544-4d85-a22b-402db57929f6"
3 | Parent: "86e9eb14-9f9c-4edc-9cef-d6b590f1da8c"
4 | Template: "a87a00b1-e6db-45ab-8b54-636fec3b5523"
5 | Path: /sitecore/client/Applications/ExmExperienceGenerator/ExmGenerator/PageSettings/Dialogs
6 | DB: core
7 | SharedFields:
8 | - ID: "ba3f86a2-4a1c-4d78-b63d-91c2779c1b5e"
9 | Hint: __Sortorder
10 | Value: 200
11 | Languages:
12 | - Language: en
13 | Versions:
14 | - Version: 1
15 | Fields:
16 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
17 | Hint: __Created
18 | Value: 20160726T091752Z
19 |
--------------------------------------------------------------------------------
/src/serialization/ExmExperienceGenerator/ExmExperienceGenerator.Core.Application/ExmExperienceGenerator/ExmGenerator/PageSettings/Sliders.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "40dc87de-206b-460c-bab7-7f23a23bd51b"
3 | Parent: "86e9eb14-9f9c-4edc-9cef-d6b590f1da8c"
4 | Template: "a87a00b1-e6db-45ab-8b54-636fec3b5523"
5 | Path: /sitecore/client/Applications/ExmExperienceGenerator/ExmGenerator/PageSettings/Sliders
6 | DB: core
7 | SharedFields:
8 | - ID: "ba3f86a2-4a1c-4d78-b63d-91c2779c1b5e"
9 | Hint: __Sortorder
10 | Value: 700
11 | Languages:
12 | - Language: en
13 | Versions:
14 | - Version: 1
15 | Fields:
16 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
17 | Hint: __Created
18 | Value: 20160801T072844Z
19 |
--------------------------------------------------------------------------------
/docker-compose.yml:
--------------------------------------------------------------------------------
1 | version: "2.4"
2 |
3 | services:
4 | xGenerator:
5 | image: ${REGISTRY}community/modules/custom-xgenerator-assets:${SITECORE_VERSION}-${NANOSERVER_VERSION}
6 | isolation: ${ISOLATION}
7 | build:
8 | context: .
9 | dockerfile: .\docker\Dockerfile
10 | args:
11 | BUILD_IMAGE: mcr.microsoft.com/dotnet/framework/sdk:4.8-windowsservercore-${WINDOWSSERVERCORE_VERSION}
12 | BASE_IMAGE: mcr.microsoft.com/windows/nanoserver:${NANOSERVER_VERSION}
13 | INTERNAL_NUGET_SOURCE: ${INTERNAL_NUGET_SOURCE}
14 | INTERNAL_NUGET_SOURCE_USERNAME: ${INTERNAL_NUGET_SOURCE_USERNAME}
15 | INTERNAL_NUGET_SOURCE_PASSWORD: ${INTERNAL_NUGET_SOURCE_PASSWORD}
16 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator/Data/Device.cs:
--------------------------------------------------------------------------------
1 | namespace ExperienceGenerator.Data
2 | {
3 | public class Device
4 | {
5 | public string Type { get; set; }
6 | public string UserAgent { get; set; }
7 | public string Name { get; set; }
8 | public string Id { get; set; }
9 |
10 | public static Device FromCsv(string csv)
11 | {
12 | var parts = csv.Split('\t');
13 | if (parts.Length < 3)
14 | return null;
15 |
16 | return new Device()
17 | {
18 | Type = parts[0],
19 | Name = parts[1],
20 | UserAgent = parts[2],
21 | Id = parts[1].ToLowerInvariant().Replace("(","").Replace(")","").Replace(",","")
22 | };
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/Common/Templates/Settings Preset.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "c7089ebd-7af0-4f14-beea-680a465231b1"
3 | Parent: "30bac1eb-8d67-4837-8393-12b29b2ff2cd"
4 | Template: "ab86861a-6030-46c5-b394-e8f99e8b87db"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/Common/Templates/Settings Preset
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20160218T162041Z
15 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
16 | Hint: __Created by
17 | Value: |
18 | sitecore\admin
19 |
--------------------------------------------------------------------------------
/src/serialization/ExmExperienceGenerator/ExmExperienceGenerator.Core.Application/ExmExperienceGenerator/ExmGenerator/PageSettings/DialogWindows.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "a3237473-d072-4b5f-912c-94dfa8eada65"
3 | Parent: "86e9eb14-9f9c-4edc-9cef-d6b590f1da8c"
4 | Template: "a87a00b1-e6db-45ab-8b54-636fec3b5523"
5 | Path: /sitecore/client/Applications/ExmExperienceGenerator/ExmGenerator/PageSettings/DialogWindows
6 | DB: core
7 | SharedFields:
8 | - ID: "ba3f86a2-4a1c-4d78-b63d-91c2779c1b5e"
9 | Hint: __Sortorder
10 | Value: 300
11 | Languages:
12 | - Language: en
13 | Versions:
14 | - Version: 1
15 | Fields:
16 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
17 | Hint: __Created
18 | Value: 20160812T191104Z
19 |
--------------------------------------------------------------------------------
/src/serialization/ExmExperienceGenerator/ExmExperienceGenerator.Core.Application/ExmExperienceGenerator/Common/Templates/Settings Preset.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "ba1d3932-28ba-4cc3-9527-38afc8b529c4"
3 | Parent: "3fb06c33-1f02-4282-9036-6d0aca42342f"
4 | Template: "ab86861a-6030-46c5-b394-e8f99e8b87db"
5 | Path: /sitecore/client/Applications/ExmExperienceGenerator/Common/Templates/Settings Preset
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20160218T162041Z
15 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
16 | Hint: __Created by
17 | Value: |
18 | sitecore\admin
19 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/Contacts/PageSettings/SearchEngines/Bing.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "e57ed5d3-4307-4023-b882-35a5bec0b4fd"
3 | Parent: "6f01950a-c49a-416e-8ed3-ee4cacc121b8"
4 | Template: "b174990b-37b1-4a60-9c7d-891b521e1b76"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/Contacts/PageSettings/SearchEngines/Bing
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20160316T100759Z
15 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
16 | Hint: __Created by
17 | Value: |
18 | sitecore\admin
19 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/Contacts/PageSettings/SearchEngines/Google.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "b7cb7cc7-cb0c-4dfc-b3d7-ae06067cbfac"
3 | Parent: "6f01950a-c49a-416e-8ed3-ee4cacc121b8"
4 | Template: "b174990b-37b1-4a60-9c7d-891b521e1b76"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/Contacts/PageSettings/SearchEngines/Google
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20160316T100759Z
15 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
16 | Hint: __Created by
17 | Value: |
18 | sitecore\admin
19 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/Contacts/PageSettings/DatePickers/DatePicker Parameters.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "f8329eed-e027-431e-be36-1e408a26cc41"
3 | Parent: "feff9e48-022b-4d74-8a30-335facd63d98"
4 | Template: "a006af51-8c91-4229-a590-c7a853684249"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/Contacts/PageSettings/DatePickers/DatePicker Parameters
6 | DB: core
7 | SharedFields:
8 | - ID: "c37f3302-2d96-40f0-801a-21ed80a645d3"
9 | Hint: ViewMode
10 | Value: Textbox
11 | Languages:
12 | - Language: en
13 | Versions:
14 | - Version: 1
15 | Fields:
16 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
17 | Hint: __Created
18 | Value: 20150505T114002Z
19 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/DataSheet/PageSettings/DatePickers/DatePicker Parameters.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "605849e7-5869-45a7-a1c6-2dfd8e84fa7b"
3 | Parent: "e51c7489-9066-49f5-9146-d7fb5f814f74"
4 | Template: "a006af51-8c91-4229-a590-c7a853684249"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/DataSheet/PageSettings/DatePickers/DatePicker Parameters
6 | DB: core
7 | SharedFields:
8 | - ID: "c37f3302-2d96-40f0-801a-21ed80a645d3"
9 | Hint: ViewMode
10 | Value: Textbox
11 | Languages:
12 | - Language: en
13 | Versions:
14 | - Version: 1
15 | Fields:
16 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
17 | Hint: __Created
18 | Value: 20150505T114002Z
19 |
--------------------------------------------------------------------------------
/appveyor.yml:
--------------------------------------------------------------------------------
1 | version: 9.0.2.{build}
2 | pull_requests:
3 | do_not_increment_build_number: true
4 | image: Visual Studio 2017
5 | assembly_info:
6 | patch: true
7 | file: '**\AssemblyInfo.*'
8 | assembly_version: '{version}'
9 | assembly_file_version: '{version}'
10 | assembly_informational_version: '{version}'
11 | before_build:
12 | - ps: msbuild ExperienceGenerator.sln /t:clean /restore
13 | build:
14 | project: ExperienceGenerator.sln
15 | verbosity: normal
16 | environment:
17 | access_token:
18 | secure: 48ZRV74CeC0RAqmAVMdTpeahzqc4EifTQokp31h7bvNal8t/16DmpzzxpEMSRSai
19 | git_email:
20 | secure: UAfy/P3FPG30Q+suI1b+s1dx681urUjw59gx6wUVmvg=
21 | git_fullname:
22 | secure: vnLPnvBeWKmNKFKI671+N9KFQA5KQNhKZPwt2ycFILk=
23 |
--------------------------------------------------------------------------------
/src/serialization/ExmExperienceGenerator/ExmExperienceGenerator.Core.Application/ExmExperienceGenerator/ExmGenerator/PageSettings/DatePickers/DatePicker Parameters.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "15762826-bd8d-4c6b-ae1d-19dcf8daf0b9"
3 | Parent: "ef512a36-365d-4c3a-8d23-80a7d09bfb92"
4 | Template: "a006af51-8c91-4229-a590-c7a853684249"
5 | Path: /sitecore/client/Applications/ExmExperienceGenerator/ExmGenerator/PageSettings/DatePickers/DatePicker Parameters
6 | DB: core
7 | SharedFields:
8 | - ID: "c37f3302-2d96-40f0-801a-21ed80a645d3"
9 | Hint: ViewMode
10 | Value: Textbox
11 | Languages:
12 | - Language: en
13 | Versions:
14 | - Version: 1
15 | Fields:
16 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
17 | Hint: __Created
18 | Value: 20150505T114002Z
19 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator/Parsing/JsonHelpers.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using Newtonsoft.Json.Linq;
3 |
4 | namespace ExperienceGenerator.Parsing
5 | {
6 | public static class JsonHelpers
7 | {
8 | public static IEnumerable AsArray(this JToken val)
9 | {
10 | if (val == null || val.Type == JTokenType.Null) yield break;
11 |
12 | var array = val as JArray;
13 | if (array == null)
14 | {
15 | yield return val;
16 |
17 | }
18 | else
19 | {
20 | foreach (var item in array)
21 | {
22 | yield return item;
23 | }
24 | }
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/src/Colossus/ContactBasedSimulator.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 |
5 | namespace Colossus
6 | {
7 | public class ContactBasedSimulator : IVisitSimulator
8 | {
9 | private readonly IEnumerable _visitorSegment;
10 |
11 | public ContactBasedSimulator(IEnumerable segments)
12 | {
13 | _visitorSegment = segments;
14 | }
15 |
16 | public IEnumerable GetVisitors(int count)
17 | {
18 | return _visitorSegment.Select(visitorSegment => new Visitor(visitorSegment)
19 | {
20 | Start = visitorSegment.DateGenerator?.Start ?? DateTime.Now
21 | });
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Exm/Services/IndexService.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Web;
5 | using ExperienceGenerator.Exm.Models;
6 | using Sitecore.Configuration;
7 | using Sitecore.ContentSearch;
8 | using Sitecore.Data.Managers;
9 | using Sitecore.ListManagement.Configuration;
10 | using Sitecore.Publishing;
11 |
12 | namespace ExperienceGenerator.Exm.Services
13 | {
14 | public static class IndexService
15 | {
16 | public static void RebuildListIndexes(Job job)
17 | {
18 | job.Status = "Rebuilding Contact List Index";
19 | ContentSearchManager.GetIndex(ListManagementSettings.ContactListIndexName).Rebuild(IndexingOptions.ForcedIndexing);
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator/Parsing/ParseConfig.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using Colossus.Statistics;
4 | using Newtonsoft.Json.Linq;
5 |
6 | namespace ExperienceGenerator.Parsing
7 | {
8 | public static class ParseConfig
9 | {
10 | public static IDictionary>> Factories { get; private set; }
11 |
12 | public static IDictionary> TrendFactories { get; private set; }
13 |
14 | static ParseConfig()
15 | {
16 | Factories = new Dictionary>>();
17 | TrendFactories = new Dictionary>();
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/src/Colossus.Integration/Processing/ChannelPatcher.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Colossus.Web;
3 | using Sitecore.Analytics.Tracking;
4 |
5 | namespace Colossus.Integration.Processing
6 | {
7 | public class ChannelPatcher : ISessionPatcher
8 | {
9 | public void UpdateSession(Session session, RequestInfo requestInfo)
10 | {
11 | requestInfo.SetIfVariablePresent("Channel", (value) =>
12 | {
13 | if (string.IsNullOrEmpty(value))
14 | {
15 | return;
16 | }
17 |
18 | Guid id;
19 | if (Guid.TryParse(value, out id))
20 | {
21 | session.Interaction.ChannelId = id;
22 | }
23 | });
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator/Parsing/Factories/VariableFactory.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Colossus;
3 | using Newtonsoft.Json.Linq;
4 |
5 | namespace ExperienceGenerator.Parsing.Factories
6 | {
7 | public abstract class VariableFactory
8 | {
9 | public virtual void UpdateSegment(VisitorSegment segment, JToken definition, XGenParser parser)
10 | {
11 | }
12 |
13 | public virtual void SetDefaults(VisitorSegment segment, XGenParser parser)
14 | {
15 | }
16 |
17 | public static VariableFactory Lambda(Action updateSegment = null,
18 | Action setDefaults = null)
19 | {
20 | return new LambdaFactory(updateSegment, setDefaults);
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/Colossus/Statistics/WignerGenerator.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 | using MathNet.Numerics.Distributions;
7 |
8 | namespace Colossus.Statistics
9 | {
10 | public class WignerGenerator : IRandomGenerator
11 | {
12 | public double R { get; set; }
13 | public double Shift { get; set; }
14 |
15 | private IRandomGenerator _beta;
16 |
17 | public WignerGenerator(double r, double shift = 0d)
18 | {
19 | R = r;
20 | Shift = shift;
21 | _beta = new BetaGenerator(1.5, 1.5);
22 | }
23 |
24 | public double Next()
25 | {
26 | return 2 * R * _beta.Next() - R + Shift;
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Client/Models/ConfigurationOptions.cs:
--------------------------------------------------------------------------------
1 | namespace ExperienceGenerator.Client.Models
2 | {
3 | using System.Collections.Generic;
4 |
5 | public class ConfigurationOptions
6 | {
7 | public string Version { get; set; }
8 | public List Websites { get; set; }
9 | public List Languages { get; set; }
10 | public List LocationGroups { get; set; }
11 | public List Campaigns { get; set; }
12 | public List ChannelTypes { get; set; }
13 | public List OrganicSearch { get; set; }
14 | public List PpcSearch { get; set; }
15 | public List OutcomeGroups { get; set; }
16 | public bool TrackerIsEnabled { get; set; }
17 | }
18 | }
--------------------------------------------------------------------------------
/src/Colossus/Statistics/NormalGenerator.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Colossus.Statistics
4 | {
5 | public class NormalGenerator : IRandomGenerator
6 | {
7 |
8 | public double Location { get; set; }
9 | public double Scale { get; set; }
10 |
11 | public NormalGenerator(double location, double scale)
12 | {
13 | Location = location;
14 | Scale = scale;
15 | }
16 |
17 | public double Next()
18 | {
19 | var _random = Randomness.Random;
20 | var u1 = 1*_random.NextDouble();
21 | var u2 = 1*_random.NextDouble();
22 |
23 | return Location + Scale * Math.Sqrt(-2 * Math.Log(Math.Max(0.0001,u1))) * Math.Cos(2 * Math.PI * u2);
24 | }
25 | }
26 | }
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/Common/Templates/Settings Preset/Data.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "f8bc9a3c-fc0b-41c1-9c61-8bbd21ce3931"
3 | Parent: "c7089ebd-7af0-4f14-beea-680a465231b1"
4 | Template: "e269fbb5-3750-427a-9149-7aa950b49301"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/Common/Templates/Settings Preset/Data
6 | DB: core
7 | SharedFields:
8 | - ID: "ba3f86a2-4a1c-4d78-b63d-91c2779c1b5e"
9 | Hint: __Sortorder
10 | Value: 100
11 | Languages:
12 | - Language: en
13 | Versions:
14 | - Version: 1
15 | Fields:
16 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
17 | Hint: __Created
18 | Value: 20160218T162146Z
19 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
20 | Hint: __Created by
21 | Value: |
22 | sitecore\admin
23 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/Contacts/PageSettings/Texts/Overview/End date.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "f0ba74d7-b168-4f11-a554-313d6d22eeb3"
3 | Parent: "029018a9-f831-40a8-909f-720839afc078"
4 | Template: "76f63df7-0235-4164-86ab-84b5ec48cb2a"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/Contacts/PageSettings/Texts/Overview/End date
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20150505T110036Z
15 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
16 | Hint: __Created by
17 | Value: |
18 | sitecore\admin
19 | - ID: "b3f89d3b-fc37-4699-860e-db8fb37323c1"
20 | Hint: Text
21 | Value: End date
22 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/DataSheet/PageSettings/Texts/Overview/End date.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "03dcb85b-c4e0-49e6-8e6a-83530c87d1f3"
3 | Parent: "b389f826-532d-426e-97f5-416a43d12b22"
4 | Template: "76f63df7-0235-4164-86ab-84b5ec48cb2a"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/DataSheet/PageSettings/Texts/Overview/End date
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20150505T110036Z
15 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
16 | Hint: __Created by
17 | Value: |
18 | sitecore\admin
19 | - ID: "b3f89d3b-fc37-4699-860e-db8fb37323c1"
20 | Hint: Text
21 | Value: End date
22 |
--------------------------------------------------------------------------------
/src/serialization/ExmExperienceGenerator/ExmExperienceGenerator.Core.Application/ExmExperienceGenerator/Common/Templates/Settings Preset/Data.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "05ba1057-954f-4da7-a8d5-c1896ba9ad33"
3 | Parent: "ba1d3932-28ba-4cc3-9527-38afc8b529c4"
4 | Template: "e269fbb5-3750-427a-9149-7aa950b49301"
5 | Path: /sitecore/client/Applications/ExmExperienceGenerator/Common/Templates/Settings Preset/Data
6 | DB: core
7 | SharedFields:
8 | - ID: "ba3f86a2-4a1c-4d78-b63d-91c2779c1b5e"
9 | Hint: __Sortorder
10 | Value: 100
11 | Languages:
12 | - Language: en
13 | Versions:
14 | - Version: 1
15 | Fields:
16 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
17 | Hint: __Created
18 | Value: 20160218T162146Z
19 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
20 | Hint: __Created by
21 | Value: |
22 | sitecore\admin
23 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/Contacts/PageSettings/Texts/Overview/Start date.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "18eaf30e-65dc-41dd-b1a5-9042280d77c8"
3 | Parent: "029018a9-f831-40a8-909f-720839afc078"
4 | Template: "76f63df7-0235-4164-86ab-84b5ec48cb2a"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/Contacts/PageSettings/Texts/Overview/Start date
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20150505T110036Z
15 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
16 | Hint: __Created by
17 | Value: |
18 | sitecore\admin
19 | - ID: "b3f89d3b-fc37-4699-860e-db8fb37323c1"
20 | Hint: Text
21 | Value: Start date
22 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/DataSheet/PageSettings/Texts/Overview/Start date.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "2ee01475-d0ff-4230-8a3a-8218e1c6a8cf"
3 | Parent: "b389f826-532d-426e-97f5-416a43d12b22"
4 | Template: "76f63df7-0235-4164-86ab-84b5ec48cb2a"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/DataSheet/PageSettings/Texts/Overview/Start date
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20150505T110036Z
15 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
16 | Hint: __Created by
17 | Value: |
18 | sitecore\admin
19 | - ID: "b3f89d3b-fc37-4699-860e-db8fb37323c1"
20 | Hint: Text
21 | Value: Start date
22 |
--------------------------------------------------------------------------------
/docker/scripts/Packaging/generate-update-package.ps1:
--------------------------------------------------------------------------------
1 | Param(
2 | [string]$target,
3 | [string]$output
4 | )
5 |
6 | Write-Host "Installing Module"
7 | Install-Module -Name Sitecore.Courier -Repository PSGallery -Force -Confirm:$False -RequiredVersion 1.4.3
8 |
9 | Write-Host "Importing Module"
10 | Import-Module Sitecore.Courier -Force -Verbose
11 |
12 | Write-Host "Creating Update Packages"
13 | New-CourierPackage -Target $target -Output "$output" -SerializationProvider "Rainbow" -IncludeFiles $false -EnsureRevision $true -DacPac $true
14 | Write-Host "Created Update Package" -ForegroundColor Green
15 |
16 | if (Test-Path -Path "$output/core.sql") {
17 | Remove-Item -Verbose -Path "$output/core.sql" -Force
18 | }
19 | if (Test-Path -Path "$output/core.dacpac") {
20 | Rename-Item -Verbose -Path "$output/core.dacpac" -NewName "Sitecore.Core.dacpac"
21 | }
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Client/Infrastructure/XGenSitecoreJobManager.cs:
--------------------------------------------------------------------------------
1 | using Sitecore;
2 | using Sitecore.Jobs;
3 |
4 | namespace ExperienceGenerator.Client.Infrastructure
5 | {
6 | ///
7 | /// A job manager that wraps Sitecore's job manager
8 | ///
9 | public class XGenSitecoreJobManager : XGenJobManager
10 | {
11 | protected override void StartJob(JobInfo info, JobSegment segment)
12 | {
13 | var options = new DefaultJobOptions("ExperienceGenerator-" + info.Id + "/" + segment.Id, "ExperienceGenerator", Context.Site.Name, this, "Run",
14 | new object[] { segment });
15 |
16 | JobManager.Start(options);
17 | }
18 |
19 | public void Run(JobSegment job)
20 | {
21 | Process(job);
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/serialization/ExmExperienceGenerator/ExmExperienceGenerator.Core.Application/ExmExperienceGenerator/ExmGenerator/PageSettings/Texts/Overview/End date.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "6545dfb9-7194-4656-85a8-d5c47805ed84"
3 | Parent: "63f091f4-1812-4987-adfe-5a3a917b1722"
4 | Template: "76f63df7-0235-4164-86ab-84b5ec48cb2a"
5 | Path: /sitecore/client/Applications/ExmExperienceGenerator/ExmGenerator/PageSettings/Texts/Overview/End date
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20150505T110036Z
15 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
16 | Hint: __Created by
17 | Value: |
18 | sitecore\admin
19 | - ID: "b3f89d3b-fc37-4699-860e-db8fb37323c1"
20 | Hint: Text
21 | Value: End date
22 |
--------------------------------------------------------------------------------
/src/serialization/ExmExperienceGenerator/ExmExperienceGenerator.Core.Application/ExmExperienceGenerator/ExmGenerator/PageSettings/List/Sent Messages.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "f4e1fc60-f41c-4ff7-96f3-a393cacf1c56"
3 | Parent: "5f825ecc-ddf8-4f6d-8465-6360123488da"
4 | Template: "871931b2-7ece-4b24-b7d4-3474eb7eaa13"
5 | Path: /sitecore/client/Applications/ExmExperienceGenerator/ExmGenerator/PageSettings/List/Sent Messages
6 | DB: core
7 | SharedFields:
8 | - ID: "ba3f86a2-4a1c-4d78-b63d-91c2779c1b5e"
9 | Hint: __Sortorder
10 | Value: 100
11 | Languages:
12 | - Language: en
13 | Versions:
14 | - Version: 1
15 | Fields:
16 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
17 | Hint: __Created
18 | Value: 20130408T132752
19 | - ID: "d3c94c90-88e8-4f33-8efd-286450bcf880"
20 | Hint: EmptyText
21 | Value: No messages match your search criteria
22 |
--------------------------------------------------------------------------------
/src/serialization/ExmExperienceGenerator/ExmExperienceGenerator.Core.Application/ExmExperienceGenerator/ExmGenerator/PageSettings/Texts/Overview/Start date.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "e164263b-8e6e-4fab-8f1d-82cb481ac527"
3 | Parent: "63f091f4-1812-4987-adfe-5a3a917b1722"
4 | Template: "76f63df7-0235-4164-86ab-84b5ec48cb2a"
5 | Path: /sitecore/client/Applications/ExmExperienceGenerator/ExmGenerator/PageSettings/Texts/Overview/Start date
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20150505T110036Z
15 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
16 | Hint: __Created by
17 | Value: |
18 | sitecore\admin
19 | - ID: "b3f89d3b-fc37-4699-860e-db8fb37323c1"
20 | Hint: Text
21 | Value: Start date
22 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/029018a9-f831-40a8-909f-720839afc078/Percentage identified visitors.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "252f366a-270c-4c47-9877-c097f06be47c"
3 | Parent: "029018a9-f831-40a8-909f-720839afc078"
4 | Template: "76f63df7-0235-4164-86ab-84b5ec48cb2a"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/Contacts/PageSettings/Texts/Overview/Percentage identified visitors
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20150505T110036Z
15 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
16 | Hint: __Created by
17 | Value: |
18 | sitecore\admin
19 | - ID: "b3f89d3b-fc37-4699-860e-db8fb37323c1"
20 | Hint: Text
21 | Value: Percentage identified visitors
22 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/Contacts/PageSettings/Texts/Overview/Pageviews per visit avg.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "c447d8d4-fa43-4577-897f-f5b0e626b6e7"
3 | Parent: "029018a9-f831-40a8-909f-720839afc078"
4 | Template: "76f63df7-0235-4164-86ab-84b5ec48cb2a"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/Contacts/PageSettings/Texts/Overview/Pageviews per visit avg
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20150505T110036Z
15 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
16 | Hint: __Created by
17 | Value: |
18 | sitecore\admin
19 | - ID: "b3f89d3b-fc37-4699-860e-db8fb37323c1"
20 | Hint: Text
21 | Value: Pageviews per visit (avg)
22 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/b389f826-532d-426e-97f5-416a43d12b22/Percentage identified visitors.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "2f0e40f9-e210-483d-800c-e388d428651c"
3 | Parent: "b389f826-532d-426e-97f5-416a43d12b22"
4 | Template: "76f63df7-0235-4164-86ab-84b5ec48cb2a"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/DataSheet/PageSettings/Texts/Overview/Percentage identified visitors
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20150505T110036Z
15 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
16 | Hint: __Created by
17 | Value: |
18 | sitecore\admin
19 | - ID: "b3f89d3b-fc37-4699-860e-db8fb37323c1"
20 | Hint: Text
21 | Value: Percentage identified visitors
22 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/Contacts/PageSettings/Texts/Overview/Number of unique visitors.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "0c360c11-d9b0-4b6f-abfc-4abf85ac6146"
3 | Parent: "029018a9-f831-40a8-909f-720839afc078"
4 | Template: "76f63df7-0235-4164-86ab-84b5ec48cb2a"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/Contacts/PageSettings/Texts/Overview/Number of unique visitors
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20150505T110036Z
15 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
16 | Hint: __Created by
17 | Value: |
18 | sitecore\admin
19 | - ID: "b3f89d3b-fc37-4699-860e-db8fb37323c1"
20 | Hint: Text
21 | Value: Number of unique visitors
22 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/Contacts/PageSettings/Texts/Overview/Time spent per visit avg.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "b47ba1dc-9b68-4c0c-92cb-ad0da3fb2663"
3 | Parent: "029018a9-f831-40a8-909f-720839afc078"
4 | Template: "76f63df7-0235-4164-86ab-84b5ec48cb2a"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/Contacts/PageSettings/Texts/Overview/Time spent per visit avg
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20150505T110036Z
15 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
16 | Hint: __Created by
17 | Value: |
18 | sitecore\admin
19 | - ID: "b3f89d3b-fc37-4699-860e-db8fb37323c1"
20 | Hint: Text
21 | Value: Time spent per page (avg)
22 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/DataSheet/PageSettings/Texts/Overview/Number of unique visitors.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "04281f02-818d-425e-8fad-7795ebe64f6d"
3 | Parent: "b389f826-532d-426e-97f5-416a43d12b22"
4 | Template: "76f63df7-0235-4164-86ab-84b5ec48cb2a"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/DataSheet/PageSettings/Texts/Overview/Number of unique visitors
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20150505T110036Z
15 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
16 | Hint: __Created by
17 | Value: |
18 | sitecore\admin
19 | - ID: "b3f89d3b-fc37-4699-860e-db8fb37323c1"
20 | Hint: Text
21 | Value: Number of unique visitors
22 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/DataSheet/PageSettings/Texts/Overview/Pageviews per visit avg.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "187f31b7-fef3-4acb-b601-0454fc268486"
3 | Parent: "b389f826-532d-426e-97f5-416a43d12b22"
4 | Template: "76f63df7-0235-4164-86ab-84b5ec48cb2a"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/DataSheet/PageSettings/Texts/Overview/Pageviews per visit avg
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20150505T110036Z
15 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
16 | Hint: __Created by
17 | Value: |
18 | sitecore\admin
19 | - ID: "b3f89d3b-fc37-4699-860e-db8fb37323c1"
20 | Hint: Text
21 | Value: Pageviews per visit (avg)
22 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/DataSheet/PageSettings/Texts/Overview/Time spent per visit avg.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "0d6001c4-4ca7-4615-b146-128763549f0f"
3 | Parent: "b389f826-532d-426e-97f5-416a43d12b22"
4 | Template: "76f63df7-0235-4164-86ab-84b5ec48cb2a"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/DataSheet/PageSettings/Texts/Overview/Time spent per visit avg
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20150505T110036Z
15 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
16 | Hint: __Created by
17 | Value: |
18 | sitecore\admin
19 | - ID: "b3f89d3b-fc37-4699-860e-db8fb37323c1"
20 | Hint: Text
21 | Value: Time spent per page (avg)
22 |
--------------------------------------------------------------------------------
/src/serialization/ExmExperienceGenerator/ExmExperienceGenerator.Core.Application/63f091f4-1812-4987-adfe-5a3a917b1722/Number of visits generated.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "7e23d53b-c163-4e28-8f06-eea05aa8695d"
3 | Parent: "63f091f4-1812-4987-adfe-5a3a917b1722"
4 | Template: "76f63df7-0235-4164-86ab-84b5ec48cb2a"
5 | Path: /sitecore/client/Applications/ExmExperienceGenerator/ExmGenerator/PageSettings/Texts/Overview/Number of visits generated
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20150505T110036Z
15 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
16 | Hint: __Created by
17 | Value: |
18 | sitecore\admin
19 | - ID: "b3f89d3b-fc37-4699-860e-db8fb37323c1"
20 | Hint: Text
21 | Value: Number of visits generated (approx.)
22 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/Contacts/PageSettings/Texts/Overview/Annual increase in traffic.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "b03bda5e-0dad-4aca-81c0-08232a1a14bc"
3 | Parent: "029018a9-f831-40a8-909f-720839afc078"
4 | Template: "76f63df7-0235-4164-86ab-84b5ec48cb2a"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/Contacts/PageSettings/Texts/Overview/Annual increase in traffic
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20150505T110036Z
15 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
16 | Hint: __Created by
17 | Value: |
18 | sitecore\admin
19 | - ID: "b3f89d3b-fc37-4699-860e-db8fb37323c1"
20 | Hint: Text
21 | Value: Annual increase in traffic
22 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/DataSheet/PageSettings/Texts/Overview/Annual increase in traffic.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "50e2d15c-824b-4c55-90a6-94605d4b6dee"
3 | Parent: "b389f826-532d-426e-97f5-416a43d12b22"
4 | Template: "76f63df7-0235-4164-86ab-84b5ec48cb2a"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/DataSheet/PageSettings/Texts/Overview/Annual increase in traffic
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20150505T110036Z
15 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
16 | Hint: __Created by
17 | Value: |
18 | sitecore\admin
19 | - ID: "b3f89d3b-fc37-4699-860e-db8fb37323c1"
20 | Hint: Text
21 | Value: Annual increase in traffic
22 |
--------------------------------------------------------------------------------
/src/Colossus/Web/RequestInfo.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 | using HtmlAgilityPack;
7 |
8 | namespace Colossus.Web
9 | {
10 | public class RequestInfo : SimulationObjectInfo
11 | {
12 | public VisitorInfo Visitor { get; set; }
13 |
14 | public VisitInfo Visit { get; set; }
15 |
16 | public bool EndVisit { get; set; }
17 |
18 | public static RequestInfo FromVisit(Request request)
19 | {
20 | var info = new RequestInfo();
21 | info.SetValuesFromObject(request);
22 | info.EndVisit = request.EndVisit;
23 | info.Visit = VisitInfo.FromVisit(request.Visit);
24 | info.Visitor = VisitorInfo.FromVisitor(request.Visit.Visitor);
25 |
26 | return info;
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/Contacts/PageSettings/Texts/Overview/Number of visits generated.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "6a40326c-10bc-491d-bf5f-37dea4a5c9f5"
3 | Parent: "029018a9-f831-40a8-909f-720839afc078"
4 | Template: "76f63df7-0235-4164-86ab-84b5ec48cb2a"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/Contacts/PageSettings/Texts/Overview/Number of visits generated
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20150505T110036Z
15 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
16 | Hint: __Created by
17 | Value: |
18 | sitecore\admin
19 | - ID: "b3f89d3b-fc37-4699-860e-db8fb37323c1"
20 | Hint: Text
21 | Value: Number of visits generated (approx.)
22 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/DataSheet/PageSettings/Texts/Overview/Number of visits generated.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "16dda573-b59c-4b3a-8578-fb8fefe8e23e"
3 | Parent: "b389f826-532d-426e-97f5-416a43d12b22"
4 | Template: "76f63df7-0235-4164-86ab-84b5ec48cb2a"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/DataSheet/PageSettings/Texts/Overview/Number of visits generated
6 | DB: core
7 | Languages:
8 | - Language: en
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20150505T110036Z
15 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
16 | Hint: __Created by
17 | Value: |
18 | sitecore\admin
19 | - ID: "b3f89d3b-fc37-4699-860e-db8fb37323c1"
20 | Hint: Text
21 | Value: Number of visits generated (approx.)
22 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator/JobSpecification.cs:
--------------------------------------------------------------------------------
1 | using System.Linq;
2 | using Colossus;
3 | using ExperienceGenerator.Parsing;
4 | using Newtonsoft.Json.Linq;
5 |
6 | namespace ExperienceGenerator
7 | {
8 | public class JobSpecification
9 | {
10 | public JobType Type { get; set; }
11 | public string RootUrl { get; set; }
12 |
13 | public int VisitorCount { get; set; }
14 |
15 | public JObject Specification { get; set; }
16 |
17 | public IVisitSimulator CreateSimulator()
18 | {
19 | var parser = new XGenParser(RootUrl);
20 | if (!Specification["Segments"].Any())
21 | return new ContactBasedSimulator(parser.ParseContacts(Specification["Contacts"], Type));
22 |
23 | var segments = parser.ParseSegments(Specification["Segments"], Type);
24 | return new SegmentBasedSimulator(segments);
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/src/Colossus/Statistics/WeightedRandom.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Colossus.Statistics
8 | {
9 | public class WeightedRandom : IRandomGenerator
10 | {
11 | private readonly double[] _weights;
12 | private double _totalWeight;
13 |
14 | public WeightedRandom(IEnumerable weights)
15 | {
16 | _weights = weights.Select(w => _totalWeight += w).ToArray();
17 | }
18 |
19 | public double Next()
20 | {
21 | var n = Randomness.Random.NextDouble() * _totalWeight;
22 | for (var i = 0; i < _weights.Length; i++)
23 | {
24 | if (n < _weights[i]) return i;
25 | }
26 |
27 | throw new Exception("All weights can't be 0");
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/Colossus.Integration/Processing/RequestInfoHelpers.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Colossus.Web;
3 |
4 | namespace Colossus.Integration.Processing
5 | {
6 | public static class RequestInfoHelpers
7 | {
8 | public static bool SetIfVariablePresent(this RequestInfo requestInfo, string name,
9 | Action setAction)
10 | {
11 | return requestInfo.SetIfVariablePresent(name, setAction);
12 | }
13 |
14 | public static bool SetIfVariablePresent(this RequestInfo requestInfo, string name, Action setAction)
15 | {
16 | return requestInfo.Variables.SetIfPresent(name, setAction)
17 | || (requestInfo.Visit != null && requestInfo.Visit.Variables.SetIfPresent(name, setAction))
18 | || (requestInfo.Visitor != null && requestInfo.Visitor.Variables.SetIfPresent(name, setAction));
19 |
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/Colossus.Integration/Properties/PublishProfiles/local.pubxml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 | FileSystem
10 | Release
11 | Any CPU
12 |
13 | True
14 | False
15 | False
16 |
17 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Client/Properties/PublishProfiles/local.pubxml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 | FileSystem
10 | Debug
11 | Any CPU
12 |
13 | True
14 | False
15 | False
16 |
17 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Exm/Properties/PublishProfiles/local.pubxml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 | FileSystem
10 | Debug
11 | Any CPU
12 |
13 | True
14 | False
15 | False
16 |
17 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/Common/Templates/Settings Preset/Data/Specification.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "a0ee2080-2cc8-4de0-8efd-8e29cd39194f"
3 | Parent: "f8bc9a3c-fc0b-41c1-9c61-8bbd21ce3931"
4 | Template: "455a3e98-a627-4b40-8035-e683a0331ac7"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/Common/Templates/Settings Preset/Data/Specification
6 | DB: core
7 | SharedFields:
8 | - ID: "ab162cc0-dc80-4abf-8871-998ee5d7ba32"
9 | Hint: Type
10 | Value: "Single-Line Text"
11 | - ID: "ba3f86a2-4a1c-4d78-b63d-91c2779c1b5e"
12 | Hint: __Sortorder
13 | Value: 100
14 | Languages:
15 | - Language: en
16 | Versions:
17 | - Version: 1
18 | Fields:
19 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
20 | Hint: __Created
21 | Value: 20160218T162146Z
22 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
23 | Hint: __Created by
24 | Value: |
25 | sitecore\admin
26 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/Contacts/PageSettings/Lists/ContactListSettings/Email.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "b802bc3e-fc92-4a8d-84c5-bfaff7a91e1d"
3 | Parent: "ad71adab-4f1d-4354-9bae-b89d97749200"
4 | Template: "d3cefe6e-e51b-4a84-b92e-aaf8aa8e8dc8"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/Contacts/PageSettings/Lists/ContactListSettings/Email
6 | DB: core
7 | SharedFields:
8 | - ID: "e67f1b1f-3488-4cf4-80ae-be285c918c2e"
9 | Hint: DataField
10 | Value: email
11 | Languages:
12 | - Language: en
13 | Versions:
14 | - Version: 1
15 | Fields:
16 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
17 | Hint: __Created
18 | Value: 20160311T093544Z
19 | - ID: "2e9fd749-0f47-4397-8ba2-c56c65366bf0"
20 | Hint: HeaderText
21 | Value: Email
22 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
23 | Hint: __Created by
24 | Value: |
25 | sitecore\admin
26 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/Contacts/PageSettings/Lists/GoalListSettings/Goal.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "ca35a7aa-6884-43f6-92e3-963fbe288670"
3 | Parent: "b7def03c-dbe4-408b-bcd0-0404d3121af1"
4 | Template: "d3cefe6e-e51b-4a84-b92e-aaf8aa8e8dc8"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/Contacts/PageSettings/Lists/GoalListSettings/Goal
6 | DB: core
7 | SharedFields:
8 | - ID: "e67f1b1f-3488-4cf4-80ae-be285c918c2e"
9 | Hint: DataField
10 | Value: $displayName
11 | Languages:
12 | - Language: en
13 | Versions:
14 | - Version: 1
15 | Fields:
16 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
17 | Hint: __Created
18 | Value: 20160311T093544Z
19 | - ID: "2e9fd749-0f47-4397-8ba2-c56c65366bf0"
20 | Hint: HeaderText
21 | Value: Goal
22 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
23 | Hint: __Created by
24 | Value: |
25 | sitecore\admin
26 |
--------------------------------------------------------------------------------
/src/serialization/ExmExperienceGenerator/ExmExperienceGenerator.Core.Application/ExmExperienceGenerator/Common/Templates/Settings Preset/Data/Specification.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "387fb35f-d93f-47ed-a7b3-48b070b28297"
3 | Parent: "05ba1057-954f-4da7-a8d5-c1896ba9ad33"
4 | Template: "455a3e98-a627-4b40-8035-e683a0331ac7"
5 | Path: /sitecore/client/Applications/ExmExperienceGenerator/Common/Templates/Settings Preset/Data/Specification
6 | DB: core
7 | SharedFields:
8 | - ID: "ab162cc0-dc80-4abf-8871-998ee5d7ba32"
9 | Hint: Type
10 | Value: "Single-Line Text"
11 | - ID: "ba3f86a2-4a1c-4d78-b63d-91c2779c1b5e"
12 | Hint: __Sortorder
13 | Value: 100
14 | Languages:
15 | - Language: en
16 | Versions:
17 | - Version: 1
18 | Fields:
19 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
20 | Hint: __Created
21 | Value: 20160218T162146Z
22 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
23 | Hint: __Created by
24 | Value: |
25 | sitecore\admin
26 |
--------------------------------------------------------------------------------
/src/Colossus.Integration/Processing/GeoPatcher.cs:
--------------------------------------------------------------------------------
1 | using Colossus.Web;
2 | using Sitecore.CES.GeoIp.Core.Model;
3 | using Sitecore.Analytics.Tracking;
4 |
5 | namespace Colossus.Integration.Processing
6 | {
7 | public class GeoPatcher : ISessionPatcher
8 | {
9 | public void UpdateSession(Session session, RequestInfo requestInfo)
10 | {
11 |
12 | if (requestInfo.Visitor != null)
13 | {
14 | var whois = new WhoIsInformation();
15 | if (requestInfo.Visitor.Variables.SetIfPresent("Country", v => whois.Country = v)
16 | | requestInfo.Visitor.Variables.SetIfPresent("Region", v => whois.Region = v)
17 | | requestInfo.Visitor.Variables.SetIfPresent("City", v => whois.City = v))
18 | {
19 | session.Interaction.SetWhoIsInformation(whois);
20 | }
21 | }
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/Contacts/PageSettings/Lists/ContactListSettings/FirstName.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "9f0ccafe-f80e-40ed-966b-cda510bac2f2"
3 | Parent: "ad71adab-4f1d-4354-9bae-b89d97749200"
4 | Template: "d3cefe6e-e51b-4a84-b92e-aaf8aa8e8dc8"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/Contacts/PageSettings/Lists/ContactListSettings/FirstName
6 | DB: core
7 | SharedFields:
8 | - ID: "e67f1b1f-3488-4cf4-80ae-be285c918c2e"
9 | Hint: DataField
10 | Value: firstName
11 | Languages:
12 | - Language: en
13 | Versions:
14 | - Version: 1
15 | Fields:
16 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
17 | Hint: __Created
18 | Value: 20160311T093544Z
19 | - ID: "2e9fd749-0f47-4397-8ba2-c56c65366bf0"
20 | Hint: HeaderText
21 | Value: First Name
22 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
23 | Hint: __Created by
24 | Value: |
25 | sitecore\admin
26 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/Contacts/PageSettings/Lists/ContactListSettings/LastName.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "ac755110-5351-4e8b-82ed-cb6ee837d847"
3 | Parent: "ad71adab-4f1d-4354-9bae-b89d97749200"
4 | Template: "d3cefe6e-e51b-4a84-b92e-aaf8aa8e8dc8"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/Contacts/PageSettings/Lists/ContactListSettings/LastName
6 | DB: core
7 | SharedFields:
8 | - ID: "e67f1b1f-3488-4cf4-80ae-be285c918c2e"
9 | Hint: DataField
10 | Value: lastName
11 | Languages:
12 | - Language: en
13 | Versions:
14 | - Version: 1
15 | Fields:
16 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
17 | Hint: __Created
18 | Value: 20160311T093544Z
19 | - ID: "2e9fd749-0f47-4397-8ba2-c56c65366bf0"
20 | Hint: HeaderText
21 | Value: Last Name
22 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
23 | Hint: __Created by
24 | Value: |
25 | sitecore\admin
26 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/Contacts/PageSettings/Lists/OutcomeListSettings/Outcome.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "7a17f59b-74b5-4d6d-a274-06c4f3520fae"
3 | Parent: "153c2c22-1d9a-4527-8a7f-e5012f3c253c"
4 | Template: "d3cefe6e-e51b-4a84-b92e-aaf8aa8e8dc8"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/Contacts/PageSettings/Lists/OutcomeListSettings/Outcome
6 | DB: core
7 | SharedFields:
8 | - ID: "e67f1b1f-3488-4cf4-80ae-be285c918c2e"
9 | Hint: DataField
10 | Value: $displayName
11 | Languages:
12 | - Language: en
13 | Versions:
14 | - Version: 1
15 | Fields:
16 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
17 | Hint: __Created
18 | Value: 20160311T093544Z
19 | - ID: "2e9fd749-0f47-4397-8ba2-c56c65366bf0"
20 | Hint: HeaderText
21 | Value: Outcome
22 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
23 | Hint: __Created by
24 | Value: |
25 | sitecore\admin
26 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator/Models/Interaction.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using ExperienceGenerator.Data;
3 | using Newtonsoft.Json;
4 |
5 | namespace ExperienceGenerator.Models
6 | {
7 |
8 | public class Interaction
9 |
10 | {
11 | [JsonProperty("geoData")]
12 | public City GeoData { get; set; }
13 |
14 | [JsonProperty("channelId")]
15 | public string ChannelId { get; set; }
16 | [JsonProperty("pages")]
17 |
18 | public IEnumerable Pages { get; set; }
19 |
20 | [JsonProperty("campaignId")]
21 | public string CampaignId { get; set; }
22 |
23 | [JsonProperty("outcomes")]
24 | public IEnumerable Outcomes { get; set; }
25 |
26 | [JsonProperty("recency")]
27 | public string Recency { get; set; }
28 |
29 | [JsonProperty("searchEngine")]
30 | public string SearchEngine { get; set; }
31 | [JsonProperty("searchKeyword")]
32 |
33 | public string SearchKeyword { get; set; }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator/Data/FileHelpers.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.IO;
4 | using System.IO.Compression;
5 |
6 | namespace ExperienceGenerator.Data
7 | {
8 | public static class FileHelpers
9 | {
10 |
11 | public static IEnumerable ReadLinesFromResource(string path, bool zipped = false)
12 | {
13 | var stream = typeof(TAssembly).Assembly.GetManifestResourceStream(path);
14 | if (stream == null)
15 | throw new ArgumentNullException(nameof(stream));
16 |
17 | if (zipped)
18 | {
19 | stream = new GZipStream(stream, CompressionMode.Decompress);
20 | }
21 |
22 | using (var reader = new StreamReader(stream))
23 | {
24 | while (!reader.EndOfStream)
25 | {
26 | yield return reader.ReadLine();
27 | }
28 | }
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/src/serialization/ExmExperienceGenerator/ExmExperienceGenerator.Core.Button/Exm Experience Generator.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "30579168-5c30-49ec-8679-21c56ce53f49"
3 | Parent: "e8ed70ba-1401-4bcf-b3f9-5a60fe67c8f5"
4 | Template: "d4c7f5f9-8977-4e0c-b6ce-28ae8e0753e2"
5 | Path: /sitecore/client/Applications/Launchpad/PageSettings/Buttons/Tools/Exm Experience Generator
6 | DB: core
7 | SharedFields:
8 | - ID: "044e3fdb-22ae-4e6c-b50e-2abdfbabd338"
9 | Hint: Link
10 | Value: /sitecore/client/Applications/ExmExperienceGenerator/ExmGenerator
11 | - ID: "ba3f86a2-4a1c-4d78-b63d-91c2779c1b5e"
12 | Hint: __Sortorder
13 | Value: 200
14 | - ID: "d25b56d4-23b6-4462-be25-b6a6d7f38e13"
15 | Hint: Icon
16 | Value: Office/32x32/mail_bug.png
17 | Languages:
18 | - Language: en
19 | Versions:
20 | - Version: 1
21 | Fields:
22 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
23 | Hint: __Created
24 | Value: 20150515T094449Z
25 | - ID: "aa4a4643-5bfc-45a7-b9d9-5183a5211d99"
26 | Hint: Text
27 | Value: Exm Experience Generator
28 |
--------------------------------------------------------------------------------
/src/Colossus/Statistics/SkewNormalGenerator.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Colossus.Statistics
4 | {
5 | public class SkewNormalGenerator : IRandomGenerator
6 | {
7 | private NormalGenerator _normalGenerator;
8 | public double Location { get; set; }
9 | public double Scale { get; set; }
10 | public double Shape { get; set; }
11 |
12 | public SkewNormalGenerator(double location, double scale, double shape)
13 | {
14 | _normalGenerator = new NormalGenerator(0, 1);
15 | Location = location;
16 | Scale = scale;
17 | Shape = shape;
18 | }
19 |
20 | public double Next()
21 | {
22 | var r = Shape / Math.Sqrt(1 + Shape * Shape);
23 | var u0 = _normalGenerator.Next();
24 | var v = _normalGenerator.Next();
25 | var u1 = r * u0 + Math.Sqrt(1 - r * r) * v;
26 | return (u0 >= 0 ? u1 : -u1) * Scale + Location;
27 | }
28 | }
29 | }
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application.Link/Experience Generator.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "b193d8b5-f112-499a-aa46-cc4e1f1bb992"
3 | Parent: "e8ed70ba-1401-4bcf-b3f9-5a60fe67c8f5"
4 | Template: "d4c7f5f9-8977-4e0c-b6ce-28ae8e0753e2"
5 | Path: /sitecore/client/Applications/Launchpad/PageSettings/Buttons/Tools/Experience Generator
6 | DB: core
7 | SharedFields:
8 | - ID: "044e3fdb-22ae-4e6c-b50e-2abdfbabd338"
9 | Hint: Link
10 | Value: /sitecore/client/Applications/ExperienceGenerator/DataSheet
11 | - ID: "ba3f86a2-4a1c-4d78-b63d-91c2779c1b5e"
12 | Hint: __Sortorder
13 | Value: 200
14 | - ID: "d25b56d4-23b6-4462-be25-b6a6d7f38e13"
15 | Hint: Icon
16 | Value: ExperienceGenerator/48x48/Experience Generator.png
17 | Languages:
18 | - Language: en
19 | Versions:
20 | - Version: 1
21 | Fields:
22 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
23 | Hint: __Created
24 | Value: 20150515T094449Z
25 | - ID: "aa4a4643-5bfc-45a7-b9d9-5183a5211d99"
26 | Hint: Text
27 | Value: Experience Generator
28 |
--------------------------------------------------------------------------------
/scripts/Unicorn/Sync.ps1:
--------------------------------------------------------------------------------
1 | param([string]$url, [string]$secret)
2 | $ErrorActionPreference = 'Stop'
3 |
4 | $ScriptPath = Split-Path $MyInvocation.MyCommand.Path
5 |
6 | # This is an example PowerShell script that will remotely execute a Unicorn sync using the new CHAP authentication system.
7 |
8 | Import-Module $ScriptPath\Unicorn.psm1
9 |
10 | # SYNC ALL CONFIGURATIONS
11 | #Sync-Unicorn -ControlPanelUrl $url -SharedSecret $secret
12 |
13 | # SYNC SPECIFIC CONFIGURATIONS
14 | Sync-Unicorn -ControlPanelUrl $url -SharedSecret $secret -Configurations @('ExperienceGenerator', 'ExmExperienceGenerator')
15 |
16 | # SYNC ALL CONFIGURATIONS, SKIPPING ANY WITH TRANSPARENT SYNC ON
17 | # Sync-Unicorn -ControlPanelUrl 'https://localhost/unicorn.aspx' -SharedSecret 'your-sharedsecret-here' -SkipTransparentConfigs
18 |
19 | # Note: you may pass -Verb 'Reserialize' for remote reserialize. Usually not needed though.
20 | # Note: If you are having authorization issues, add -DebugSecurity to your cmdlet invocation; this will display the raw signatures being used to compare to the server.
21 |
--------------------------------------------------------------------------------
/src/serialization/ExmExperienceGenerator/ExmExperienceGenerator.Core.Application/ExmExperienceGenerator/ExmGenerator/PageSettings/List/Sent Messages/Open rate.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "41eb7827-3eb2-47cb-82ca-d412d5adb43b"
3 | Parent: "f4e1fc60-f41c-4ff7-96f3-a393cacf1c56"
4 | Template: "d3cefe6e-e51b-4a84-b92e-aaf8aa8e8dc8"
5 | Path: /sitecore/client/Applications/ExmExperienceGenerator/ExmGenerator/PageSettings/List/Sent Messages/Open rate
6 | DB: core
7 | SharedFields:
8 | - ID: "ba3f86a2-4a1c-4d78-b63d-91c2779c1b5e"
9 | Hint: __Sortorder
10 | Value: 600
11 | - ID: "e67f1b1f-3488-4cf4-80ae-be285c918c2e"
12 | Hint: DataField
13 | Value: openRate
14 | Languages:
15 | - Language: en
16 | Versions:
17 | - Version: 1
18 | Fields:
19 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
20 | Hint: __Created
21 | Value: 20130408T115111
22 | - ID: "2e9fd749-0f47-4397-8ba2-c56c65366bf0"
23 | Hint: HeaderText
24 | Value: Open rate
25 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
26 | Hint: __Created by
27 | Value: |
28 | sitecore\admin
29 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application.Contacts.Link/Contact Experience Generator.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "e45c19e0-f3fa-45d6-90d5-c295803a7ce3"
3 | Parent: "e8ed70ba-1401-4bcf-b3f9-5a60fe67c8f5"
4 | Template: "d4c7f5f9-8977-4e0c-b6ce-28ae8e0753e2"
5 | Path: /sitecore/client/Applications/Launchpad/PageSettings/Buttons/Tools/Contact Experience Generator
6 | DB: core
7 | SharedFields:
8 | - ID: "044e3fdb-22ae-4e6c-b50e-2abdfbabd338"
9 | Hint: Link
10 | Value: /sitecore/client/Applications/ExperienceGenerator/Contacts
11 | - ID: "ba3f86a2-4a1c-4d78-b63d-91c2779c1b5e"
12 | Hint: __Sortorder
13 | Value: 200
14 | - ID: "d25b56d4-23b6-4462-be25-b6a6d7f38e13"
15 | Hint: Icon
16 | Value: ExperienceGenerator/48x48/Experience Generator.png
17 | Languages:
18 | - Language: en
19 | Versions:
20 | - Version: 1
21 | Fields:
22 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
23 | Hint: __Created
24 | Value: 20150515T094449Z
25 | - ID: "aa4a4643-5bfc-45a7-b9d9-5183a5211d99"
26 | Hint: Text
27 | Value: Profile Experience Generator
28 |
--------------------------------------------------------------------------------
/src/serialization/ExmExperienceGenerator/ExmExperienceGenerator.Core.Application/ExmExperienceGenerator/ExmGenerator/PageSettings/List/Sent Messages/Recipients.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "e1aa826e-324a-49a2-82d3-ded3a187f695"
3 | Parent: "f4e1fc60-f41c-4ff7-96f3-a393cacf1c56"
4 | Template: "d3cefe6e-e51b-4a84-b92e-aaf8aa8e8dc8"
5 | Path: /sitecore/client/Applications/ExmExperienceGenerator/ExmGenerator/PageSettings/List/Sent Messages/Recipients
6 | DB: core
7 | SharedFields:
8 | - ID: "ba3f86a2-4a1c-4d78-b63d-91c2779c1b5e"
9 | Hint: __Sortorder
10 | Value: 400
11 | - ID: "e67f1b1f-3488-4cf4-80ae-be285c918c2e"
12 | Hint: DataField
13 | Value: totalRecipients
14 | Languages:
15 | - Language: en
16 | Versions:
17 | - Version: 1
18 | Fields:
19 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
20 | Hint: __Created
21 | Value: 20140312T141614
22 | - ID: "2e9fd749-0f47-4397-8ba2-c56c65366bf0"
23 | Hint: HeaderText
24 | Value: Recipients
25 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
26 | Hint: __Created by
27 | Value: |
28 | sitecore\admin
29 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Client/Repositories/ContactSettingsRepository.cs:
--------------------------------------------------------------------------------
1 | using Newtonsoft.Json.Linq;
2 | using Sitecore.Data;
3 | using Sitecore.Data.Items;
4 | using Sitecore.SecurityModel;
5 |
6 | namespace ExperienceGenerator.Client.Repositories
7 | {
8 | public class ContactSettingsRepository : SettingsRepository
9 | {
10 | public ContactSettingsRepository()
11 | {
12 | }
13 |
14 | public ContactSettingsRepository(Database database) : base(database)
15 | {
16 | }
17 |
18 | private const string contactPresetsRootPath = "/sitecore/client/Applications/ExperienceGenerator/Common/Contacts";
19 | protected override Item PresetsRoot => Database.GetItem(contactPresetsRootPath);
20 |
21 | public JArray GetContactSettingPreset(ID id)
22 | {
23 | using (new SecurityDisabler())
24 | {
25 | var preset = PresetsRoot.Axes.SelectSingleItem($"//*[@@id='{id}']");
26 | return preset == null ? null : CreateArray(preset);
27 | }
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/Api doc.txt:
--------------------------------------------------------------------------------
1 | Selection options for the frontend (Websites, locations, campaigns etc)
2 | GET:
3 | /api/xgen/options
4 |
5 | To start a job:
6 | POST:
7 | /api/xgen/jobs
8 |
9 | If that worked, the server will redirect to:
10 | GET:
11 | /api/xgen/jobs/(job id)
12 |
13 | Poll (i.e. keep requesting) this URL to get updated status information
14 |
15 | For the user, the interesting parts of this response are:
16 | Started (Start date time)
17 | JobStatus (Options: Pending, Running, Cancelling, Cancelled, Failed, Complete)
18 | Progress (number between 0.0 and 1.0)
19 | CompletedVisitors (Number of completed visitors/contacts)
20 | CompletedVisits (Number of completed visits)
21 | TargetVisitors (The requested number of visitors to simulate)
22 |
23 |
24 | To cancel a job send
25 | DELETE:
26 | /api/xgen/jobs/(job id)
27 |
28 |
29 | To pause a job
30 | GET:
31 | /api/xgen/jobs/(job id)?pause=true
32 |
33 | resume
34 | GET:
35 | /api/xgen/jobs/(job id)?pause=false
36 |
37 | Stop all jbos
38 | POST:
39 | /api/xgen/clearall
40 |
41 | Empty analytics database and RDB. ONLY DO THIS IF YOU KNOW WHAT YOU ARE DOING!
42 | POST:
43 | /api/xgen/flush
--------------------------------------------------------------------------------
/src/ExperienceGenerator/Parsing/Factories/LambdaFactory.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Colossus;
3 | using Newtonsoft.Json.Linq;
4 |
5 | namespace ExperienceGenerator.Parsing.Factories
6 | {
7 | public class LambdaFactory : VariableFactory
8 | {
9 | private readonly Action _updateSegment;
10 | private readonly Action _setDefaults;
11 |
12 | public LambdaFactory(Action updateSegment = null, Action setDefaults = null)
13 | {
14 | _updateSegment = updateSegment;
15 | _setDefaults = setDefaults;
16 | }
17 |
18 | public override void UpdateSegment(VisitorSegment segment, JToken definition, XGenParser parser)
19 | {
20 | if (_updateSegment != null) _updateSegment(segment, definition, parser);
21 | }
22 |
23 | public override void SetDefaults(VisitorSegment segment, XGenParser parser)
24 | {
25 | if (_setDefaults != null) _setDefaults(segment, parser);
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/Colossus.Integration/App_Config/Include/Colossus/Colossus.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Exm/App_Start/WebApiConfig.cs:
--------------------------------------------------------------------------------
1 | namespace ExperienceGenerator.Exm
2 | {
3 | using System.Web.Http;
4 | using ExperienceGenerator.Exm.Services;
5 |
6 | public static class WebApiConfig
7 | {
8 | public static void Register(HttpConfiguration config)
9 | {
10 |
11 | JobManager.Instance = new JobManager();
12 |
13 | config.Routes.MapHttpRoute(
14 | name: "ExperienceGeneratorExmJobsApi",
15 | routeTemplate: "clientapi/xgen/exmjobs/{action}/{id}",
16 | defaults: new {controller = "ExmJobs", id = RouteParameter.Optional}
17 | );
18 | config.Routes.MapHttpRoute(
19 | name: "ExperienceGeneratorExmEventsApi",
20 | routeTemplate: "clientapi/xgen/exmevents/{action}",
21 | defaults: new {controller = "ExmEvents"}
22 | );
23 | config.Routes.MapHttpRoute(
24 | name: "ExmActionsApi",
25 | routeTemplate: "clientapi/xgen/exmactions/{action}/{id}",
26 | defaults: new { controller = "ExmActions", id = RouteParameter.Optional }
27 | );
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/Colossus.Integration/Processing/TimePatcher.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Colossus.Web;
3 | using Sitecore.Analytics.Tracking;
4 |
5 | namespace Colossus.Integration.Processing
6 | {
7 | public class TimePatcher : ISessionPatcher
8 | {
9 | public void UpdateSession(Session session, RequestInfo requestInfo)
10 | {
11 | var startDate = DateTime.SpecifyKind(requestInfo.Visit.Start, DateTimeKind.Utc);
12 | var endDate = DateTime.SpecifyKind(requestInfo.Visit.End, DateTimeKind.Utc);
13 |
14 | session.Interaction.StartDateTime = startDate;
15 | session.Interaction.EndDateTime = endDate;
16 |
17 | var page = session.Interaction.CurrentPage;
18 | if (page != null)
19 | {
20 | var requestInfoStart = DateTime.SpecifyKind(requestInfo.Start, DateTimeKind.Utc);
21 | var requestInfoEnd = DateTime.SpecifyKind(requestInfo.End, DateTimeKind.Utc);
22 |
23 | page.DateTime = requestInfoStart;
24 | page.Duration = (int)Math.Round((requestInfoEnd - requestInfoStart).TotalMilliseconds);
25 | }
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/Colossus/Statistics/TruncatedRandom.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Colossus.Statistics
4 | {
5 | public class TruncatedRandom : IRandomGenerator
6 | {
7 |
8 | public static int MaxSamples = 50000;
9 |
10 | public IRandomGenerator Inner { get; set; }
11 | public double? Min { get; set; }
12 | public double? Max { get; set; }
13 |
14 | public TruncatedRandom(IRandomGenerator inner, double? min = null, double? max = null)
15 | {
16 | Inner = inner;
17 | Min = min;
18 | Max = max;
19 | }
20 |
21 | public double Next()
22 | {
23 | var i = 0;
24 | double value = 0d;
25 | do
26 | {
27 | value = Inner.Next();
28 |
29 | if ( ++i > MaxSamples) throw new TimeoutException(string.Format("A value within the allowed range was not obtained after {0} samples", MaxSamples));
30 |
31 | } while ((Min.HasValue && value < Min) || (Max.HasValue && value >= Max));
32 |
33 |
34 | return value;
35 | }
36 | }
37 | }
--------------------------------------------------------------------------------
/src/Colossus.Integration/Processing/TriggerEventsAction.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using Colossus.Web;
4 | using Sitecore.Analytics;
5 | using Sitecore.Analytics.Data;
6 |
7 | namespace Colossus.Integration.Processing
8 | {
9 | public class TriggerEventsAction : IRequestAction
10 | {
11 | public void Execute(ITracker tracker, RequestInfo requestInfo)
12 | {
13 | var events = requestInfo.Variables.GetOrDefault("TriggerEvents") as IEnumerable;
14 |
15 | if (events != null)
16 | {
17 | foreach (var e in events)
18 | {
19 | var eventData = tracker.Interaction.CurrentPage.Register(new PageEventData(e.Name, e.Id ?? Guid.Empty) {Text = e.Text});
20 |
21 | if (e.CustomValues != null)
22 | {
23 | foreach (var kv in e.CustomValues)
24 | {
25 | eventData.CustomValues[kv.Key] = kv.Value;
26 | }
27 | }
28 | }
29 | }
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator/Services/GetRandomCityService.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using Colossus;
5 | using Colossus.Statistics;
6 | using ExperienceGenerator.Data;
7 | using ExperienceGenerator.Repositories;
8 | using Sitecore;
9 |
10 | namespace ExperienceGenerator.Services
11 | {
12 | public class GetRandomCityService
13 | {
14 | private readonly GeoDataRepository _geoDataRepository;
15 |
16 | public GetRandomCityService()
17 | {
18 | _geoDataRepository = new GeoDataRepository();
19 | }
20 |
21 | public City GetRandomCity(string subcontinentCode)
22 | {
23 | if (subcontinentCode == null)
24 | throw new ArgumentNullException(nameof(subcontinentCode));
25 |
26 | var cities = _geoDataRepository.Cities.Where(c => c.Country.SubcontinentCode == subcontinentCode);
27 | return Sets.Weighted(builder =>
28 | {
29 | foreach (var city in cities)
30 | {
31 | builder.Add(city, city.Population ?? 0);
32 | }
33 | })();
34 | }
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/Contacts/PageSettings/Sliders/Slider Parameters.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "5395551f-bcd6-4b63-8a6d-d7d665cb302e"
3 | Parent: "907285a5-619e-46b9-b7af-9a6f7bae76e1"
4 | Template: "5cde79be-228f-4be5-b9d3-e63e365f1063"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/Contacts/PageSettings/Sliders/Slider Parameters
6 | DB: core
7 | SharedFields:
8 | - ID: "6d845445-ce74-4649-a2da-24f912a9471a"
9 | Hint: TitleValuesStep
10 | Value: 100
11 | - ID: "ce272a7d-d61d-4c13-a060-1b658c84b6c2"
12 | Hint: HideTooltip
13 | Type: Checkbox
14 | Value: 1
15 | Languages:
16 | - Language: en
17 | Versions:
18 | - Version: 1
19 | Fields:
20 | - ID: "0ec9416c-b808-45b4-9319-089cc747b6b8"
21 | Hint: Maximum
22 | Value: 100
23 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
24 | Hint: __Created
25 | Value: 20150505T111102Z
26 | - ID: "814faeb1-c6a9-4bf8-9224-03ec1b29a52b"
27 | Hint: Type
28 | Value: Single
29 | - ID: "e6d6a619-e0b5-4361-8c0e-ec8fc3d2f402"
30 | Hint: Minimum
31 | Value: 0
32 | - ID: "ff5074fa-9220-4dba-89af-61e82babdf02"
33 | Hint: SelectedValue
34 | Value: 50
35 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/DataSheet/PageSettings/Sliders/Slider Parameters.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "7c26edfa-a15d-410b-b78d-3c95e89fd469"
3 | Parent: "a77343c6-4986-4a87-a7b6-beb7f6219f6d"
4 | Template: "5cde79be-228f-4be5-b9d3-e63e365f1063"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/DataSheet/PageSettings/Sliders/Slider Parameters
6 | DB: core
7 | SharedFields:
8 | - ID: "6d845445-ce74-4649-a2da-24f912a9471a"
9 | Hint: TitleValuesStep
10 | Value: 100
11 | - ID: "ce272a7d-d61d-4c13-a060-1b658c84b6c2"
12 | Hint: HideTooltip
13 | Type: Checkbox
14 | Value: 1
15 | Languages:
16 | - Language: en
17 | Versions:
18 | - Version: 1
19 | Fields:
20 | - ID: "0ec9416c-b808-45b4-9319-089cc747b6b8"
21 | Hint: Maximum
22 | Value: 100
23 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
24 | Hint: __Created
25 | Value: 20150505T111102Z
26 | - ID: "814faeb1-c6a9-4bf8-9224-03ec1b29a52b"
27 | Hint: Type
28 | Value: Single
29 | - ID: "e6d6a619-e0b5-4361-8c0e-ec8fc3d2f402"
30 | Hint: Minimum
31 | Value: 0
32 | - ID: "ff5074fa-9220-4dba-89af-61e82babdf02"
33 | Hint: SelectedValue
34 | Value: 50
35 |
--------------------------------------------------------------------------------
/src/serialization/ExmExperienceGenerator/ExmExperienceGenerator.Core.Application/ExmExperienceGenerator/ExmGenerator/PageSettings/Sliders/Slider Parameters.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "42c0f5bc-b06e-4d4e-90dd-0be69b18a586"
3 | Parent: "40dc87de-206b-460c-bab7-7f23a23bd51b"
4 | Template: "5cde79be-228f-4be5-b9d3-e63e365f1063"
5 | Path: /sitecore/client/Applications/ExmExperienceGenerator/ExmGenerator/PageSettings/Sliders/Slider Parameters
6 | DB: core
7 | SharedFields:
8 | - ID: "6d845445-ce74-4649-a2da-24f912a9471a"
9 | Hint: TitleValuesStep
10 | Value: 100
11 | - ID: "ce272a7d-d61d-4c13-a060-1b658c84b6c2"
12 | Hint: HideTooltip
13 | Type: Checkbox
14 | Value: 1
15 | Languages:
16 | - Language: en
17 | Versions:
18 | - Version: 1
19 | Fields:
20 | - ID: "0ec9416c-b808-45b4-9319-089cc747b6b8"
21 | Hint: Maximum
22 | Value: 100
23 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
24 | Hint: __Created
25 | Value: 20150505T111102Z
26 | - ID: "814faeb1-c6a9-4bf8-9224-03ec1b29a52b"
27 | Hint: Type
28 | Value: Single
29 | - ID: "e6d6a619-e0b5-4361-8c0e-ec8fc3d2f402"
30 | Hint: Minimum
31 | Value: 0
32 | - ID: "ff5074fa-9220-4dba-89af-61e82babdf02"
33 | Hint: SelectedValue
34 | Value: 50
35 |
--------------------------------------------------------------------------------
/src/Colossus/Statistics/OffsetGenerator.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Colossus.Statistics
8 | {
9 | public class OffsetGenerator : IRandomGenerator
10 | {
11 | public double Offset { get; set; }
12 | public IRandomGenerator Inner { get; set; }
13 | public double? Min { get; set; }
14 | public double? Max { get; set; }
15 | public bool Round { get; set; }
16 |
17 | public OffsetGenerator(IRandomGenerator inner, double offset, double? min = null, double? max = null, bool round = false)
18 | {
19 | Offset = offset;
20 | Inner = inner;
21 | Min = min;
22 | Max = max;
23 | Round = round;
24 | }
25 |
26 | public double Next()
27 | {
28 | var value = Min.HasValue && Max.HasValue
29 | ? Inner.Next().Shift(Offset, Min.Value, Max.Value)
30 | : Inner.Next() + Offset;
31 |
32 | if (Round)
33 | {
34 | value = Math.Round(value);
35 | }
36 |
37 | return value;
38 | }
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator/Repositories/GeoDataRepository.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Linq;
3 | using ExperienceGenerator.Data;
4 |
5 | namespace ExperienceGenerator.Repositories
6 | {
7 | public class GeoDataRepository
8 | {
9 | private static GeoDataCache _cache;
10 | private static readonly object _lock = new object();
11 | private List _cities;
12 |
13 | private static GeoDataCache Cache
14 | {
15 | get
16 | {
17 | lock (_lock)
18 | {
19 | return _cache ?? (_cache = GeoDataCache.FromResource());
20 | }
21 | }
22 | }
23 |
24 | public List Cities => _cities ?? (_cities = Cache.Cities.ToList());
25 | public List Continents => Cache.Continents;
26 | public List Countries => Cache.Countries.Values.ToList();
27 |
28 | public List CitiesByCountry(int isoNumeric)
29 | {
30 | return Cache.CitiesByCountry[isoNumeric].ToList();
31 | }
32 | public City CityByID(int id)
33 | {
34 | return Cache.Cities.FirstOrDefault(c => c.GeoNameId == id);
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/src/Colossus/Statistics/MathNetGenerator.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 | using MathNet.Numerics.Distributions;
7 |
8 | namespace Colossus.Statistics
9 | {
10 | public class MathNetGenerator : IRandomGenerator
11 | {
12 | private Func _sampler;
13 |
14 | public double Scale { get; set; }
15 | public double Offset { get; set; }
16 |
17 | private MathNetGenerator(double scale = 1, double offset = 0)
18 | {
19 | Scale = scale;
20 | Offset = offset;
21 | }
22 |
23 | public MathNetGenerator(IContinuousDistribution distribution, double scale = 1, double offset = 0)
24 | :this(scale,offset)
25 | {
26 | _sampler = distribution.Sample;
27 | }
28 |
29 | public MathNetGenerator(IDiscreteDistribution distribution, double scale = 1, double offset = 0)
30 | : this(scale, offset)
31 | {
32 | _sampler = ()=>(double)distribution.Sample();
33 | }
34 |
35 | public double Next()
36 | {
37 | return Scale*_sampler() + Offset;
38 | }
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Exm/sitecore/shell/client/Applications/ExmExperienceGenerator/DataRepository.js:
--------------------------------------------------------------------------------
1 | define(["sitecore", "jquery", "underscore"], function (sc, $, _) {
2 | var urls = {
3 | devicesUrl: "/clientapi/xgen/devices",
4 | locationsUrl: "/clientapi/xgen/exmactions/locations"
5 | };
6 |
7 | var dataRepository = {
8 | getDevices: function (callback) {
9 | $.ajax({
10 | url:urls.devicesUrl
11 | }).success(function (data) {
12 | _.each(data, function (item) {
13 | item.Label = item.Name;
14 | });
15 |
16 | var groupedDevices = _.map(_.groupBy(data, "Type"), function (item, idx) {
17 | return {
18 | Label: idx,
19 | Options: item
20 | }
21 | });
22 | callback(groupedDevices);
23 | });
24 | },
25 | getLocations: function (callback) {
26 | $.ajax({
27 | url: urls.locationsUrl
28 | }).success(callback);
29 | },
30 |
31 | getItem:function(id, database, callback) {
32 | database = database || "master";
33 | var db = new sc.Definitions.Data.Database(new sc.Definitions.Data.DatabaseUri(database));
34 | db.getItem(id, callback);
35 | }
36 | };
37 |
38 | return dataRepository;
39 | });
40 |
--------------------------------------------------------------------------------
/src/serialization/ExmExperienceGenerator/ExmExperienceGenerator.Core.Application/ExmExperienceGenerator/ExmGenerator/PageSettings/List/Sent Messages/Campaign name.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "ad79bed6-54a4-411d-a3d7-e80395cae098"
3 | Parent: "f4e1fc60-f41c-4ff7-96f3-a393cacf1c56"
4 | Template: "d3cefe6e-e51b-4a84-b92e-aaf8aa8e8dc8"
5 | Path: /sitecore/client/Applications/ExmExperienceGenerator/ExmGenerator/PageSettings/List/Sent Messages/Campaign name
6 | DB: core
7 | SharedFields:
8 | - ID: "b2a46ae4-38f9-4538-a2b3-8021083e0e40"
9 | Hint: Sortable
10 | Type: Checkbox
11 | Value: 1
12 | - ID: "ba3f86a2-4a1c-4d78-b63d-91c2779c1b5e"
13 | Hint: __Sortorder
14 | Value: 100
15 | - ID: "e67f1b1f-3488-4cf4-80ae-be285c918c2e"
16 | Hint: DataField
17 | Value: name
18 | Languages:
19 | - Language: en
20 | Versions:
21 | - Version: 1
22 | Fields:
23 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
24 | Hint: __Created
25 | Value: 20130408T114934
26 | - ID: "2e9fd749-0f47-4397-8ba2-c56c65366bf0"
27 | Hint: HeaderText
28 | Value: Name
29 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
30 | Hint: __Created by
31 | Value: |
32 | sitecore\admin
33 | - ID: "75388012-d191-4561-8074-5340e149c0a5"
34 | Hint: SortField
35 | Value: name
36 |
--------------------------------------------------------------------------------
/src/serialization/ExmExperienceGenerator/ExmExperienceGenerator.Core.Application/ExmExperienceGenerator/ExmGenerator/PageSettings/List/Sent Messages/Subject.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "18a2ecbe-9405-4df0-b2c6-2a4f256f8016"
3 | Parent: "f4e1fc60-f41c-4ff7-96f3-a393cacf1c56"
4 | Template: "d3cefe6e-e51b-4a84-b92e-aaf8aa8e8dc8"
5 | Path: /sitecore/client/Applications/ExmExperienceGenerator/ExmGenerator/PageSettings/List/Sent Messages/Subject
6 | DB: core
7 | SharedFields:
8 | - ID: "35e827ff-bb6c-4ed6-b79f-c41750ea5d46"
9 | Hint: HTMLTemplate
10 | Value: "{{subject}}"
11 | - ID: "b2a46ae4-38f9-4538-a2b3-8021083e0e40"
12 | Hint: Sortable
13 | Type: Checkbox
14 | Value: 1
15 | - ID: "ba3f86a2-4a1c-4d78-b63d-91c2779c1b5e"
16 | Hint: __Sortorder
17 | Value: 125
18 | Languages:
19 | - Language: en
20 | Versions:
21 | - Version: 1
22 | Fields:
23 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
24 | Hint: __Created
25 | Value: 20130408T114934
26 | - ID: "2e9fd749-0f47-4397-8ba2-c56c65366bf0"
27 | Hint: HeaderText
28 | Value: Subject
29 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
30 | Hint: __Created by
31 | Value: |
32 | sitecore\admin
33 | - ID: "75388012-d191-4561-8074-5340e149c0a5"
34 | Hint: SortField
35 | Value: subject
36 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator/Data/DeviceRepository.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Concurrent;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 |
5 | namespace ExperienceGenerator.Data
6 | {
7 | public class DeviceRepository
8 | {
9 | private static readonly object lockObject = new object();
10 |
11 | public DeviceRepository()
12 | {
13 | if (DeviceCache.Count != 0)
14 | return;
15 | lock (lockObject)
16 | {
17 | if (DeviceCache.Count == 0)
18 | {
19 | LoadDevices().ToList().ForEach(x => DeviceCache.TryAdd(x.Name, x));
20 | }
21 | }
22 | }
23 |
24 | public IEnumerable GetAll()
25 | {
26 | return DeviceCache.Values;
27 | }
28 |
29 | private static IEnumerable LoadDevices()
30 | {
31 | return FileHelpers.ReadLinesFromResource("ExperienceGenerator.Data.devices.txt").Select(x => x.Trim()).Where(x => !x.StartsWith("#") && !string.IsNullOrWhiteSpace(x)).Select(Device.FromCsv);
32 | }
33 |
34 | private static readonly ConcurrentDictionary DeviceCache = new ConcurrentDictionary();
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/src/Colossus/Visitor.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 |
5 | namespace Colossus
6 | {
7 | public class Visitor : SimulationObject
8 | {
9 | public VisitorSegment Segment { get; set; }
10 |
11 | public List Visits { get; set; }
12 |
13 | public Visitor(VisitorSegment segment)
14 | {
15 | Segment = segment;
16 | Visits = new List();
17 | }
18 |
19 | public Visit AddVisit(TimeSpan? pause = null)
20 | {
21 | var lastVisit = Visits.Count > 0 ? Visits[Visits.Count - 1].End : Start;
22 | lastVisit += pause ?? TimeSpan.Zero;
23 | var visit = new Visit { Visitor = this, Start = lastVisit, End = lastVisit };
24 |
25 | Visits.Add(visit);
26 | End = visit.End;
27 |
28 | if (Segment != null)
29 | {
30 | foreach (var v in Segment.VisitVariables)
31 | {
32 | v.SetValues(visit);
33 | }
34 | foreach (var v in Segment.VisitorVariables)
35 | {
36 | v.SetValues(visit.Visitor);
37 | }
38 | }
39 |
40 | return visit;
41 | }
42 |
43 | public IEnumerable Commit()
44 | {
45 | var behavior = Segment.Behavior();
46 | return behavior == null ? Enumerable.Empty() : behavior.Commit(this);
47 | }
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Client/App_Config/Include/Unicorn/Unicorn.PowerShell.config:
--------------------------------------------------------------------------------
1 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator/Parsing/Factories/ContactDataVariable.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using Colossus;
3 | using Faker;
4 |
5 | namespace ExperienceGenerator.Parsing.Factories
6 | {
7 | public class ContactDataVariable : VisitorVariablesBase
8 | {
9 | public static int VisitorIndex;
10 |
11 | public double IdentifiedPercentage { get; set; }
12 |
13 | public ContactDataVariable(double identifiedPercentage)
14 | {
15 | IdentifiedPercentage = identifiedPercentage;
16 | }
17 |
18 | public override void SetValues(SimulationObject target)
19 | {
20 | if (!(Randomness.Random.NextDouble() < IdentifiedPercentage))
21 | return;
22 |
23 | target.Variables["ContactId"] = "XGen" + VisitorIndex;
24 | VisitorIndex++;
25 |
26 | var firstName = Name.First();
27 | var lastName = Name.Last();
28 |
29 | target.Variables["ContactFirstName"] = firstName;
30 | target.Variables["ContactLastName"] = lastName;
31 | target.Variables["ContactEmail"] = Internet.Email(firstName + " " + lastName);
32 | }
33 |
34 | public override IEnumerable ProvidedVariables => new[] { "ContactId", "ContactFirstName", "ContactLastName", "ContactEmail" };
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/src/Colossus/Statistics/WeightedSetBuilder.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Colossus.Statistics
8 | {
9 | public class WeightedSetBuilder
10 | {
11 | private List> _weights;
12 | public WeightedSetBuilder()
13 | {
14 | _weights = new List>();
15 | }
16 |
17 | public WeightedSetBuilder Add(TValue value, double weight = 1d)
18 | {
19 | if (weight > 0)
20 | {
21 | _weights.Add(new KeyValuePair(value, weight));
22 | }
23 | return this;
24 | }
25 |
26 | public Func Build()
27 | {
28 | if (_weights.Count == 0) throw new InvalidOperationException("No items specified");
29 | if (_weights.Count == 1) return () => _weights[0].Key;
30 |
31 | var set = new WeightedRandom(_weights.Select(w => w.Value));
32 |
33 | return () => _weights[(int)set.Next()].Key;
34 | }
35 |
36 | public static implicit operator Func(WeightedSetBuilder builder)
37 | {
38 | return builder.Build();
39 | }
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Client/App_Start/WebApiConfig.cs:
--------------------------------------------------------------------------------
1 | using System.Web.Http;
2 | using ExperienceGenerator.Client.Infrastructure;
3 | using Sitecore.Analytics.Aggregation.Data.Model;
4 |
5 | namespace ExperienceGenerator.Client
6 | {
7 | public static class WebApiConfig
8 | {
9 | public static void Register(HttpConfiguration config)
10 | {
11 | // Web API configuration and services
12 |
13 | // Web API routes
14 | //config.MapHttpAttributeRoutes();
15 |
16 | //Disable dimension cache to enable flush of reporting database
17 | Dimension.EnableCaching = false;
18 |
19 | XGenJobManager.Instance = new XGenSitecoreJobManager();
20 |
21 | config.Routes.MapHttpRoute(
22 | name: "ExperienceGeneratorJobsApi",
23 | routeTemplate: "clientapi/xgen/jobs/{id}",
24 | defaults: new {controller = "ExperienceGeneratorJobs", id = RouteParameter.Optional}
25 | );
26 |
27 |
28 | config.Routes.MapHttpRoute(
29 | name: "ExperienceGeneratorActionsApi",
30 | routeTemplate: "clientapi/xgen/{action}/{id}",
31 | defaults: new {controller = "ExperienceGeneratorActions", id = RouteParameter.Optional}
32 | );
33 | }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/src/Colossus/Statistics/NoiseHelper.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Colossus.Statistics
8 | {
9 | public static class NoiseHelper
10 | {
11 | public static double MultiplicativeNoise(this double d, double scale)
12 | {
13 | //return d*((1 - noise) + 2*Randomness.Random.NextDouble()*noise);
14 |
15 | return d + d*(Randomness.Random.NextDouble() - .5)*scale;
16 | }
17 |
18 | public static double AdditiveNoise(this double d, double scale)
19 | {
20 | return d + Randomness.Random.NextDouble()*scale;
21 | }
22 |
23 | public static double Shift(this double val, double shift, double min = 0, double max = 1)
24 | {
25 | val = (val - min + shift) % (max - min);
26 | if (val < 0)
27 | {
28 | val += (max - min);
29 | }
30 | val += min;
31 | return val;
32 | }
33 |
34 | public static IRandomGenerator Offset(this IRandomGenerator gen, double offset, double? min = null,
35 | double? max = null, bool round = false)
36 | {
37 | return new OffsetGenerator(gen, offset, min: min, max: max, round: round);
38 | }
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/src/Colossus.Integration/web.Debug.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
17 |
18 |
29 |
30 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Client/Web.Debug.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
17 |
18 |
29 |
30 |
--------------------------------------------------------------------------------
/src/Colossus/Web/ResponseInfo.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.IO;
4 | using System.Linq;
5 | using System.Net;
6 | using System.Text;
7 | using System.Threading.Tasks;
8 | using HtmlAgilityPack;
9 | using Newtonsoft.Json;
10 |
11 | namespace Colossus.Web
12 | {
13 | public class ResponseInfo
14 | {
15 | public HttpStatusCode StatusCode { get; set; }
16 | public string Response { get; set; }
17 |
18 |
19 | public void ParseHttpResponse(HttpWebResponse response)
20 | {
21 | if (response == null) return;
22 |
23 | var httpResponse = response;
24 | StatusCode = httpResponse.StatusCode;
25 | }
26 |
27 | private HtmlDocument _document;
28 | [JsonIgnore]
29 | public HtmlNode DocumentNode
30 | {
31 | get
32 | {
33 |
34 | if (_document == null)
35 | {
36 | try
37 | {
38 | _document = new HtmlDocument();
39 | _document.LoadHtml(Response);
40 | }
41 | catch
42 | {
43 | return null;
44 | }
45 | }
46 |
47 | return _document.DocumentNode;
48 | }
49 | }
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Client/App_Config/Include/Unicorn/Unicorn.UI.IdentityServer.config:
--------------------------------------------------------------------------------
1 |
10 |
11 |
12 |
13 |
17 |
18 |
19 |
20 | /unicorn.aspx
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Exm/App_Config/Include/ExperienceGenerator/ExmExperienceGenerator.Serialization.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/docker/Dockerfile:
--------------------------------------------------------------------------------
1 | # escape=`
2 |
3 | ARG BASE_IMAGE
4 | ARG BUILD_IMAGE
5 |
6 | FROM ${BUILD_IMAGE} as build
7 |
8 | ARG INTERNAL_NUGET_SOURCE
9 | ARG INTERNAL_NUGET_SOURCE_USERNAME="VSTS"
10 | ARG INTERNAL_NUGET_SOURCE_PASSWORD
11 |
12 | SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
13 |
14 | WORKDIR /project
15 | COPY src/ ./src
16 | COPY ExperienceGenerator.sln .
17 | COPY nuget.config .
18 | COPY docker/scripts/Add-InternalNugetFeed.ps1 .
19 |
20 | RUN .\Add-InternalNugetFeed.ps1
21 |
22 | RUN msbuild /m:1 /p:Configuration="Release" /p:DeployOnBuild=true /p:DeployDefaultTarget=WebPublish /p:WebPublishMethod=FileSystem /p:DeleteExistingFiles=false /p:publishUrl=C:\out\xGenerator /p:BuildProjectReferences=true /target:Build "ExperienceGenerator.sln" /restore
23 |
24 | FROM ${BUILD_IMAGE} as data
25 |
26 | SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
27 |
28 | COPY docker/scripts/Packaging/ /packaging
29 |
30 | COPY /src/serialization /items
31 |
32 | # Install latest PackageProvider (required for Sitecore.Courier)
33 | RUN Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force
34 | RUN .\packaging\generate-update-package.ps1 -target /items -output /out/db
35 |
36 | FROM ${BASE_IMAGE} as solution
37 |
38 | COPY --from=build /out/xgenerator /module/cm/content
39 | COPY --from=data /out/db /module/db
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Client/App_Config/Include/ExperienceGenerator/ExperienceGenerator.Serialization.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/Colossus.Integration/web.Release.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
17 |
18 |
19 |
30 |
31 |
--------------------------------------------------------------------------------
/src/Colossus/VisitorSegment.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using Colossus.Statistics;
5 |
6 | namespace Colossus
7 | {
8 | public class VisitorSegment
9 | {
10 | public string Name { get; set; }
11 |
12 | public List VisitorVariables { get; set; }
13 |
14 | public List VisitVariables { get; set; }
15 |
16 | public List RequestVariables { get; set; }
17 |
18 | public DateGenerator DateGenerator { get; set; }
19 |
20 | public Func Behavior { get; set; }
21 |
22 | public VisitorSegment(string name)
23 | {
24 | Name = name;
25 | VisitorVariables = new List();
26 | VisitVariables = new List();
27 | RequestVariables = new List();
28 | DateGenerator = new DateGenerator();
29 | }
30 |
31 | public void SortVariables()
32 | {
33 | VisitorVariables = VisitorVariables.TopologicalSort(
34 | (x, other) => other.Any(x.DependsOn));
35 | VisitVariables = VisitVariables.TopologicalSort(
36 | (x, other) => other.Any(x.DependsOn));
37 | RequestVariables = RequestVariables.TopologicalSort(
38 | (x, other) => other.Any(x.DependsOn));
39 | }
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Client/Web.Release.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
17 |
18 |
19 |
30 |
31 |
--------------------------------------------------------------------------------
/src/Colossus/CompositeVariable.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Linq;
3 |
4 | namespace Colossus
5 | {
6 | public class CompositeVariable : VisitorVariablesBase
7 | {
8 | public IVisitorVariables Var1 { get; set; }
9 | public IVisitorVariables Var2 { get; set; }
10 | public double Var2Prob { get; set; }
11 |
12 | public CompositeVariable(IVisitorVariables var1, IVisitorVariables var2, double var2Prob)
13 | {
14 | Var1 = var1;
15 | Var2 = var2;
16 | Var2Prob = var2Prob;
17 | }
18 |
19 | public override void SetValues(SimulationObject target)
20 | {
21 | var var = Randomness.Random.NextDouble() < Var2Prob ? Var2 : Var1;
22 | var.SetValues(target);
23 | }
24 |
25 | public override IEnumerable ProvidedVariables { get
26 | {
27 | return Var1.ProvidedVariables.Concat(Var2.ProvidedVariables).Distinct();
28 | } }
29 |
30 | public IEnumerable DependendtVariables
31 | {
32 | get
33 | {
34 | return Var1.DependendtVariables.Concat(Var2.DependendtVariables).Distinct();
35 | }
36 | }
37 |
38 | protected override bool Equals(VisitorVariablesBase other)
39 | {
40 | var o = other as CompositeVariable;
41 |
42 | return o != null && o.Var1.Equals(Var1);
43 | }
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator/Parsing/Factories/OutcomeVariable.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using Colossus;
5 | using Colossus.Integration.Processing;
6 |
7 | namespace ExperienceGenerator.Parsing.Factories
8 | {
9 | public class OutcomeVariable : VisitorVariablesBase
10 | {
11 | public Func> Outcomes { get; set; }
12 | public Func ValueDistribution { get; set; }
13 |
14 | public OutcomeVariable(Func> outcomes, Func valueDistribution)
15 | {
16 | Outcomes = outcomes;
17 | ValueDistribution = valueDistribution;
18 | }
19 |
20 | public override void SetValues(SimulationObject target)
21 | {
22 | var outcomes = Outcomes();
23 |
24 | if (outcomes.Any())
25 | {
26 | target.Variables["TriggerOutcomes"] =
27 | outcomes.Select(oc =>
28 |
29 | new TriggerOutcomeData
30 | {
31 | DefinitionId = Guid.Parse(oc),
32 | MonetaryValue = (decimal) ValueDistribution()
33 | }
34 | ).ToList();
35 | }
36 | }
37 |
38 | public override IEnumerable ProvidedVariables
39 | {
40 | get { yield return "TriggerOutcomes"; }
41 | }
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Client/App_Config/Include/Unicorn/Unicorn.zSharedSecret.config:
--------------------------------------------------------------------------------
1 |
14 |
15 |
16 |
17 |
18 | 749CABBC85EAD20CE55E2C6066F1BE375D2115696C8A8B24DB6ED1FD60613086
19 |
24 | false
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Exm/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 |
4 | // General Information about an assembly is controlled through the following
5 | // set of attributes. Change these attribute values to modify the information
6 | // associated with an assembly.
7 | [assembly: AssemblyTitle("ExperienceGenerator.Exm")]
8 | [assembly: AssemblyDescription("")]
9 | [assembly: AssemblyConfiguration("")]
10 | [assembly: AssemblyCompany("")]
11 | [assembly: AssemblyProduct("ExperienceGenerator.Exm")]
12 | [assembly: AssemblyCopyright("Copyright © 2016")]
13 | [assembly: AssemblyTrademark("")]
14 | [assembly: AssemblyCulture("")]
15 |
16 | // Setting ComVisible to false makes the types in this assembly not visible
17 | // to COM components. If you need to access a type in this assembly from
18 | // COM, set the ComVisible attribute to true on that type.
19 | [assembly: ComVisible(false)]
20 |
21 | // The following GUID is for the ID of the typelib if this project is exposed to COM
22 | [assembly: Guid("45448aac-dc97-4dc6-b7a0-d1b5700b2511")]
23 |
24 | // Version information for an assembly consists of the following four values:
25 | //
26 | // Major Version
27 | // Minor Version
28 | // Build Number
29 | // Revision
30 | //
31 | // You can specify all the values or you can default the Revision and Build Numbers
32 | // by using the '*' as shown below:
33 | [assembly: AssemblyVersion("1.0.0.0")]
34 | [assembly: AssemblyFileVersion("1.0.0.0")]
35 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Client/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("ExperienceGenerator")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("ExperienceGenerator")]
13 | [assembly: AssemblyCopyright("Copyright © 2015")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("986fe7a5-3aab-479e-b9a5-10715537308e")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Revision and Build Numbers
33 | // by using the '*' as shown below:
34 | [assembly: AssemblyVersion("1.0.0.0")]
35 | [assembly: AssemblyFileVersion("1.0.0.0")]
36 |
--------------------------------------------------------------------------------
/src/Colossus/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("Colossus")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("Colossus")]
13 | [assembly: AssemblyCopyright("Copyright © 2015")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("f3e7c524-eecd-4688-900d-5de5cd4bc43c")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Exm/Infrastructure/UpdateFakeGeoData.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Linq;
3 | using ExperienceGenerator.Repositories;
4 | using Sitecore.Analytics.Pipelines.CommitSession;
5 |
6 | namespace ExperienceGenerator.Exm.Infrastructure
7 | {
8 | public class UpdateFakeGeoData : CommitSessionProcessor
9 | {
10 | private readonly GeoDataRepository _geoDataRepository;
11 |
12 | public UpdateFakeGeoData()
13 | {
14 | _geoDataRepository = new GeoDataRepository();
15 | }
16 |
17 | public override void Process(CommitSessionPipelineArgs args)
18 | {
19 | if (args.Session?.Interaction?.UserAgent == null)
20 | return;
21 | var userAgent = args.Session?.Interaction?.UserAgent;
22 | var substrings = userAgent.Split(new [] {';', ')', '('}, StringSplitOptions.RemoveEmptyEntries);
23 | var cityComment = substrings.FirstOrDefault(s => s.Trim().StartsWith("city:"));
24 | if (cityComment == null)
25 | return;
26 | var cityIdString = cityComment.Substring(5);
27 | int cityId;
28 | if (!int.TryParse(cityIdString, out cityId))
29 | return;
30 | var city = _geoDataRepository.CityByID(cityId);
31 | if (city == null)
32 | return;
33 | args.Session.Interaction.SetWhoIsInformation(city.ToWhoIsInformation());
34 | args.Session.Interaction.UpdateLocationReference();
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/src/serialization/ExmExperienceGenerator/ExmExperienceGenerator.Core.Application/ExmExperienceGenerator/ExmGenerator/PageSettings/Texts/Test summary.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "c715d760-d109-4080-813b-40006feec60a"
3 | Parent: "08ad1b64-5c46-46a8-a643-c26397c5b8cc"
4 | Template: "6437cfd5-76ca-48aa-bfbd-8b8d73eb5581"
5 | Path: /sitecore/client/Applications/ExmExperienceGenerator/ExmGenerator/PageSettings/Texts/Test summary
6 | DB: core
7 | Languages:
8 | - Language: da
9 | Versions:
10 | - Version: 1
11 | Fields:
12 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
13 | Hint: __Created
14 | Value: 20160812T190446Z
15 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
16 | Hint: __Created by
17 | Value: |
18 | sitecore\admin
19 | - Language: "de-DE"
20 | Versions:
21 | - Version: 1
22 | Fields:
23 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
24 | Hint: __Created
25 | Value: 20160812T190446Z
26 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
27 | Hint: __Created by
28 | Value: |
29 | sitecore\admin
30 | - Language: en
31 | Versions:
32 | - Version: 1
33 | Fields:
34 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
35 | Hint: __Created
36 | Value: 20160812T190446Z
37 | - Language: "ja-JP"
38 | Versions:
39 | - Version: 1
40 | Fields:
41 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
42 | Hint: __Created
43 | Value: 20160812T190446Z
44 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
45 | Hint: __Created by
46 | Value: |
47 | sitecore\admin
48 |
--------------------------------------------------------------------------------
/src/Colossus/Statistics/LinearGenerator.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Colossus.Statistics
4 | {
5 | public class LinearGenerator : IRandomGenerator
6 | {
7 | private Random _random;
8 | public double Min { get; set; }
9 | public double Max { get; set; }
10 | public double Start { get; set; }
11 | public double End { get; set; }
12 | public double Increase { get; set; }
13 |
14 | public LinearGenerator(double min = 0, double max = 1, double start = 1, double end = 1)
15 | {
16 | _random = Randomness.Random;
17 | Min = min;
18 | Max = max;
19 | Start = start;
20 | End = end;
21 | }
22 |
23 |
24 | double Cdf(double t)
25 | {
26 | return 0.5 * (End * t * t - Start * t * t) + Start * t;
27 | }
28 |
29 | double Quantile(double u)
30 | {
31 | return (Start - Math.Sqrt(2 * End * u + Start * Start - 2 * Start * u)) / (Start - End);
32 | }
33 |
34 | public double Next()
35 | {
36 | if (Min == Max) return Min;
37 |
38 | if (Start == End)
39 | {
40 | return Min + (Max - Min) * _random.NextDouble();
41 | }
42 |
43 | var u = _random.NextDouble() * (Cdf(1) - Cdf(0));
44 | return Min + (Max - Min) * Quantile(u);
45 | }
46 |
47 | public static LinearGenerator Fixed(double value)
48 | {
49 | return new LinearGenerator(value, value);
50 | }
51 | }
52 | }
--------------------------------------------------------------------------------
/src/ExperienceGenerator/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("ExperienceGenerator")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("ExperienceGenerator")]
13 | [assembly: AssemblyCopyright("Copyright © 2015")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("5da0b725-a88a-47bb-b3e9-46d5d9c8c5d8")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/src/Colossus.Integration/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("Colossus.Integration")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("Colossus.Integration")]
13 | [assembly: AssemblyCopyright("Copyright © 2015")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("128f12d5-b967-4f82-8fcb-611586abd0df")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/src/Colossus.Integration/Models/SitecoreVisitContext.cs:
--------------------------------------------------------------------------------
1 | using Colossus.Web;
2 | using Sitecore.Analytics.Model;
3 |
4 | namespace Colossus.Integration.Models
5 | {
6 |
7 | public class SitecoreVisitRequestContext : WebVisitRequestContext
8 | {
9 | public new SitecoreRequestContext VisitorContext
10 | {
11 | get { return base.VisitorContext as SitecoreRequestContext; }
12 | }
13 |
14 | public SitecoreVisitRequestContext(WebRequestContext visitorContext, Visit visit)
15 | : base(visitorContext, visit)
16 | {
17 |
18 | }
19 |
20 | public VisitData VisitData { get; protected set; }
21 | static object syncRoot = new object();
22 |
23 | protected override void EndVisit()
24 | {
25 | lock (syncRoot)
26 | {
27 | var req = new Request
28 | {
29 | Visit = this.Visit,
30 | Url = this.VisitorContext.ColossusHandlerUrl,
31 | EndVisit = true
32 | };
33 |
34 | this.Execute(req);
35 | base.EndVisit();
36 | }
37 | }
38 |
39 | protected override SitecoreResponseInfo Execute(Request request)
40 | {
41 | var response = base.Execute(request);
42 |
43 | if (response.VisitData != null)
44 | {
45 | this.VisitData = response.VisitData;
46 | }
47 |
48 | return response;
49 | }
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Client/App_Config/Include/Unicorn/Unicorn.Users.DataProvider.config:
--------------------------------------------------------------------------------
1 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/src/Colossus/Statistics/ExponentialGenerator.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Colossus.Statistics
4 | {
5 | public class ExponentialGenerator : IRandomGenerator
6 | {
7 | private Random _random;
8 | public double Lambda { get; set; }
9 | public double? MaxValue { get; set; }
10 |
11 | public ExponentialGenerator(double lambda, double? maxValue = null)
12 | {
13 | _random = Randomness.Random;
14 | Lambda = lambda;
15 | MaxValue = maxValue;
16 | }
17 |
18 | public static double Cdf(double x, double lambda)
19 | {
20 | return 1 - Math.Exp(-lambda * x);
21 | }
22 |
23 | public static double Quantile(double u, double lambda)
24 | {
25 | return -Math.Log(1 - u) / lambda;
26 | }
27 |
28 | public double Next()
29 | {
30 | return Quantile((MaxValue.HasValue ? Cdf(MaxValue.Value, Lambda) : 1) * _random.NextDouble(), Lambda);
31 | }
32 |
33 | public static ExponentialGenerator TopPerecentage(double topPct, double belowValue, double? maxValue = null)
34 | {
35 | var lambda = -Math.Log(1 - topPct) / belowValue;
36 | if (maxValue.HasValue)
37 | {
38 | //Can't find closed form expression for alpha. Nor can http://www.wolframalpha.com/
39 | lambda =
40 | Solver.BrentsMethodSolve(
41 | l => Cdf(belowValue, l) / Cdf(maxValue.Value, l) - topPct, 1e-5, lambda);
42 | }
43 | return new ExponentialGenerator(lambda, maxValue);
44 | }
45 | }
46 | }
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Client/App_Config/Include/Unicorn/Unicorn.DataProvider.config:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
9 |
10 |
11 | $(1)
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 | dataProviders/unicorn
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 | dataProviders/unicorn
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator.Client/App_Config/Include/Unicorn/Unicorn.Roles.DataProvider.config:
--------------------------------------------------------------------------------
1 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/src/Colossus/SegmentBasedSimulator.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using Colossus.Statistics;
4 |
5 | namespace Colossus
6 | {
7 | public class SegmentBasedSimulator : IVisitSimulator
8 | {
9 | private readonly Func _segments;
10 |
11 | public SegmentBasedSimulator(VisitorSegment segment)
12 | {
13 | _segments = () => segment;
14 | }
15 |
16 | public SegmentBasedSimulator(Action> segments) : this(Sets.Weighted(segments))
17 | {
18 | }
19 |
20 | public SegmentBasedSimulator(Func segments)
21 | {
22 | _segments = segments;
23 | }
24 |
25 | public Visitor GetNextVisitor()
26 | {
27 | var segment = _segments();
28 |
29 | var visitor = new Visitor(segment)
30 | {
31 | Start = segment.DateGenerator.NextDate()
32 | };
33 | visitor.End = visitor.Start;
34 |
35 | foreach (var var in segment.VisitorVariables)
36 | {
37 | var.SetValues(visitor);
38 | }
39 |
40 | return visitor;
41 | }
42 |
43 | public IEnumerable GetVisitors(int count)
44 | {
45 | for (var i = 0; i < count; i++)
46 | {
47 | yield return GetNextVisitor();
48 | }
49 | }
50 |
51 | public static SegmentBasedSimulator RoundRobin(params VisitorSegment[] segments)
52 | {
53 | var index = 0;
54 | return new SegmentBasedSimulator(() => segments[index++%segments.Length]);
55 | }
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/src/Colossus/GetSetHelpers.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Web;
4 | using Colossus.Web;
5 |
6 | namespace Colossus
7 | {
8 | public static class GetSetHelpers
9 | {
10 |
11 | public static RequestInfo ColossusInfo(this HttpContext ctx)
12 | {
13 | if (ctx == null) return null;
14 |
15 | var info = ctx.Items[DataEncoding.RequestDataKey] as RequestInfo;
16 |
17 |
18 | if (info == null)
19 | {
20 | var data = ctx.Request.Headers.GetChunked(DataEncoding.RequestDataKey);
21 | if (data != null)
22 | {
23 | ctx.Items[DataEncoding.RequestDataKey] = info = DataEncoding.DecodeHeaderValue(data);
24 | }
25 | }
26 |
27 | return info;
28 | }
29 |
30 | public static TValue TryGetValue(this TObject o, Func getter,
31 | TValue defaultValue = default(TValue))
32 | {
33 | return o == null ? defaultValue : getter(o);
34 | }
35 |
36 | public static bool SetIfPresent(this IDictionary dict, string key, Action action)
37 | {
38 | return dict.SetIfPresent(key, action);
39 | }
40 |
41 | public static bool SetIfPresent(this IDictionary dict, string key, Action action)
42 | {
43 | object val;
44 | if (dict.TryGetValue(key, out val))
45 | {
46 | if (val is TValue)
47 | {
48 | action((TValue) val);
49 | return true;
50 | }
51 | }
52 |
53 | return false;
54 | }
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/src/Colossus/Visit.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 | namespace Colossus
5 | {
6 | public class Visit : SimulationObject
7 | {
8 | public Visitor Visitor { get; set; }
9 |
10 | public List Requests { get; set; }
11 |
12 | public Visit()
13 | {
14 | Requests = new List();
15 | }
16 |
17 | public Request AddRequest(string url, TimeSpan? duration = null, TimeSpan? pause = null,
18 | string durationVariable = "Duration", string pauseVariable = "Pause")
19 | {
20 | var request = new Request { Visit = this, Url = url };
21 | if (Visitor.Segment != null)
22 | {
23 | foreach (var v in Visitor.Segment.RequestVariables)
24 | {
25 | v.SetValues(request);
26 | }
27 | }
28 |
29 | var lastRequest = Requests.Count > 0 ? Requests[Requests.Count - 1].End : Start;
30 | lastRequest += pause ?? request.GetVariable(pauseVariable, request.GetVariable("Pause", TimeSpan.Zero));
31 |
32 | request.Start = lastRequest;
33 | request.End = lastRequest + (duration ?? request.GetVariable(durationVariable, request.GetVariable("Duration", TimeSpan.Zero)));
34 |
35 |
36 | End = request.End;
37 | Visitor.End = End;
38 |
39 | if (Requests.Count == 0 && !request.Variables.ContainsKey("Referrer"))
40 | {
41 | var referrer = this.GetVariable("Referrer");
42 | if (!string.IsNullOrEmpty(referrer))
43 | {
44 | request.Variables.Add("Referrer", referrer);
45 | }
46 | }
47 |
48 | Requests.Add(request);
49 |
50 | return request;
51 | }
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator/Parsing/Factories/MonthFactory.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using Colossus;
5 | using Colossus.Statistics;
6 | using Newtonsoft.Json.Linq;
7 |
8 | namespace ExperienceGenerator.Parsing.Factories
9 | {
10 | public class MonthFactory : VariableFactory
11 | {
12 |
13 | private readonly double[] _partsOfYears;
14 |
15 | public MonthFactory()
16 | {
17 | var rd = new DateTime(2014, 1, 1);
18 | var dates = new List();
19 | dates.Add(new DateTime(rd.Year - 1, 12, DateTime.DaysInMonth(rd.Year - 1, 12)/2));
20 | for (var i = 1; i <= 12; i++)
21 | {
22 | dates.Add(new DateTime(2014, i, DateTime.DaysInMonth(2014, i)/2));
23 | }
24 | dates.Add(new DateTime(rd.Year + 1, 1, DateTime.DaysInMonth(rd.Year - 1, 1) / 2));
25 |
26 | _partsOfYears = dates.Select(d => (d - rd).TotalDays/365d).ToArray();
27 | }
28 |
29 | public override void UpdateSegment(VisitorSegment segment, JToken definition, XGenParser parser)
30 | {
31 | var weights = Enumerable.Range(1, 12).Select(i => 0d).ToArray();
32 | foreach (var kv in (JObject) definition)
33 | {
34 | weights[int.Parse(kv.Key) - 1] = kv.Value.Value();
35 | }
36 |
37 | segment.DateGenerator.PartOfYear(t =>
38 | {
39 | t.Clear();
40 | t.MoveAbsolute(0, (weights[0] + weights[11])/2);
41 | for (var i = 0; i < weights.Length; i++)
42 | {
43 | t.LineAbsolute(_partsOfYears[i + 1], weights[i]);
44 | }
45 | t.LineAbsolute(1, (weights[0] + weights[11]) / 2);
46 | });
47 | }
48 | }
49 | }
50 |
51 |
--------------------------------------------------------------------------------
/src/ExperienceGenerator/Parsing/Factories/IdentifiedContactDataVariable.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using Colossus;
3 |
4 | namespace ExperienceGenerator.Parsing.Factories
5 | {
6 |
7 | public class IdentifiedContactDataVariable : VisitorVariablesBase
8 | {
9 | public override void SetValues(SimulationObject target)
10 | {
11 | target.Variables["ContactId"] = this.Email;
12 | target.Variables["ContactFirstName"] = this.FirstName;
13 | target.Variables["ContactMiddleName"] = this.MiddleName;
14 | target.Variables["ContactLastName"] = this.LastName;
15 | target.Variables["ContactEmail"] = this.Email;
16 | target.Variables["ContactGender"] = this.Gender;
17 | target.Variables["ContactBirthDate"] = this.BirthDate;
18 | target.Variables["ContactJobTitle"] = this.JobTitle;
19 | target.Variables["ContactPhone"] = this.Phone;
20 | target.Variables["ContactPicture"] = this.Picture;
21 | target.Variables["ContactAddress"] = this.Address;
22 | }
23 |
24 | public string Email { get; set; }
25 | public string LastName { get; set; }
26 | public string FirstName { get; set; }
27 | public string MiddleName { get; set; }
28 | public string BirthDate { get; set; }
29 | public string Gender { get; set; }
30 | public string JobTitle { get; set; }
31 | public string Phone { get; set; }
32 | public string Picture { get; set; }
33 | public string Address { get; set; }
34 |
35 | public override IEnumerable ProvidedVariables => new[]
36 | {
37 | "ContactId",
38 | "ContactFirstName",
39 | "ContactMiddleName",
40 | "ContactLastName",
41 | "ContactEmail",
42 | "ContactGender",
43 | "ContactBirthDate",
44 | "ContactJobTitle",
45 | "ContactPhone",
46 | "ContactPicture",
47 | "ContactAddress"
48 | };
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/DataSheet/PageSettings/Tabs.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "40463b45-8869-4a7e-b86e-2fdc8ce1ae57"
3 | Parent: "eb911a25-00ff-465e-9794-c6046fb24a8f"
4 | Template: "a87a00b1-e6db-45ab-8b54-636fec3b5523"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/DataSheet/PageSettings/Tabs
6 | DB: core
7 | Languages:
8 | - Language: da
9 | Fields:
10 | - ID: "b5e02ad9-d56f-4c41-a065-a133db87bdeb"
11 | Hint: __Display name
12 | Value: Faner
13 | Versions:
14 | - Version: 1
15 | Fields:
16 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
17 | Hint: __Created
18 | Value: "20150314T040858:635619029387798384Z"
19 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
20 | Hint: __Created by
21 | Value: |
22 | sitecore\admin
23 | - Language: "de-DE"
24 | Fields:
25 | - ID: "b5e02ad9-d56f-4c41-a065-a133db87bdeb"
26 | Hint: __Display name
27 | Value: Tabs
28 | Versions:
29 | - Version: 1
30 | Fields:
31 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
32 | Hint: __Created
33 | Value: "20150314T041139:635619030997144893Z"
34 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
35 | Hint: __Created by
36 | Value: |
37 | sitecore\admin
38 | - Language: en
39 | Versions:
40 | - Version: 1
41 | Fields:
42 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
43 | Hint: __Created
44 | Value: 20140708T173320
45 | - Language: "ja-JP"
46 | Fields:
47 | - ID: "b5e02ad9-d56f-4c41-a065-a133db87bdeb"
48 | Hint: __Display name
49 | Value: タブ
50 | Versions:
51 | - Version: 1
52 | Fields:
53 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
54 | Hint: __Created
55 | Value: "20150314T041014:635619030146534590Z"
56 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
57 | Hint: __Created by
58 | Value: |
59 | sitecore\admin
60 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/Contacts/PageSettings/Texts.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "5fdba48b-53b2-4e3d-80e6-7d36fa98fdd5"
3 | Parent: "9d7fab6c-778a-460e-b6ee-508222174804"
4 | Template: "a87a00b1-e6db-45ab-8b54-636fec3b5523"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/Contacts/PageSettings/Texts
6 | DB: core
7 | Languages:
8 | - Language: da
9 | Fields:
10 | - ID: "b5e02ad9-d56f-4c41-a065-a133db87bdeb"
11 | Hint: __Display name
12 | Value: Tekster
13 | Versions:
14 | - Version: 1
15 | Fields:
16 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
17 | Hint: __Created
18 | Value: "20150314T040848:635619029289989014Z"
19 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
20 | Hint: __Created by
21 | Value: |
22 | sitecore\admin
23 | - Language: "de-DE"
24 | Fields:
25 | - ID: "b5e02ad9-d56f-4c41-a065-a133db87bdeb"
26 | Hint: __Display name
27 | Value: Texte
28 | Versions:
29 | - Version: 1
30 | Fields:
31 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
32 | Hint: __Created
33 | Value: "20150314T041125:635619030852932044Z"
34 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
35 | Hint: __Created by
36 | Value: |
37 | sitecore\admin
38 | - Language: en
39 | Versions:
40 | - Version: 1
41 | Fields:
42 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
43 | Hint: __Created
44 | Value: 20140702T120534
45 | - Language: "ja-JP"
46 | Fields:
47 | - ID: "b5e02ad9-d56f-4c41-a065-a133db87bdeb"
48 | Hint: __Display name
49 | Value: テキスト
50 | Versions:
51 | - Version: 1
52 | Fields:
53 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
54 | Hint: __Created
55 | Value: "20150314T041001:635619030019973845Z"
56 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
57 | Hint: __Created by
58 | Value: |
59 | sitecore\admin
60 |
--------------------------------------------------------------------------------
/src/serialization/ExperienceGenerator/ExperienceGenerator.Core.Application/ExperienceGenerator/DataSheet/PageSettings/Texts.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ID: "ae110b84-5964-4494-a84e-dd773d22307a"
3 | Parent: "eb911a25-00ff-465e-9794-c6046fb24a8f"
4 | Template: "a87a00b1-e6db-45ab-8b54-636fec3b5523"
5 | Path: /sitecore/client/Applications/ExperienceGenerator/DataSheet/PageSettings/Texts
6 | DB: core
7 | Languages:
8 | - Language: da
9 | Fields:
10 | - ID: "b5e02ad9-d56f-4c41-a065-a133db87bdeb"
11 | Hint: __Display name
12 | Value: Tekster
13 | Versions:
14 | - Version: 1
15 | Fields:
16 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
17 | Hint: __Created
18 | Value: "20150314T040848:635619029289989014Z"
19 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
20 | Hint: __Created by
21 | Value: |
22 | sitecore\admin
23 | - Language: "de-DE"
24 | Fields:
25 | - ID: "b5e02ad9-d56f-4c41-a065-a133db87bdeb"
26 | Hint: __Display name
27 | Value: Texte
28 | Versions:
29 | - Version: 1
30 | Fields:
31 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
32 | Hint: __Created
33 | Value: "20150314T041125:635619030852932044Z"
34 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
35 | Hint: __Created by
36 | Value: |
37 | sitecore\admin
38 | - Language: en
39 | Versions:
40 | - Version: 1
41 | Fields:
42 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
43 | Hint: __Created
44 | Value: 20140702T120534
45 | - Language: "ja-JP"
46 | Fields:
47 | - ID: "b5e02ad9-d56f-4c41-a065-a133db87bdeb"
48 | Hint: __Display name
49 | Value: テキスト
50 | Versions:
51 | - Version: 1
52 | Fields:
53 | - ID: "25bed78c-4957-4165-998a-ca1b52f67497"
54 | Hint: __Created
55 | Value: "20150314T041001:635619030019973845Z"
56 | - ID: "5dd74568-4d4b-44c1-b513-0af5f4cda34f"
57 | Hint: __Created by
58 | Value: |
59 | sitecore\admin
60 |
--------------------------------------------------------------------------------