Packages

package model

Source
package.scala
Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. model
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Type Members

  1. case class Abtest(name: TestName, feature: FeatureName, author: String, start: Instant, end: Option[Instant], groups: List[Group], ranges: GroupRanges, requiredTags: List[Tag] = Nil, alternativeIdName: Option[MetaFieldName] = None, userMetaCriteria: UserMetaCriteria = None, salt: Option[String] = None, segmentRanges: List[GroupRange] = Nil, groupMetas: GroupMetas = Map(), specialization: Option[Specialization] = None) extends Product with Serializable

    Internal representation of an A/B test, the public representation is Abtest

  2. case class AbtestSpec(name: TestName, feature: FeatureName, author: String, start: OffsetDateTime, end: Option[OffsetDateTime], groups: List[Group], requiredTags: List[Tag] = Nil, alternativeIdName: Option[MetaFieldName] = None, userMetaCriteria: UserMetaCriteria = None, reshuffle: Boolean = false, segmentRanges: List[GroupRange] = Nil, specialization: Option[Specialization] = None, groupMetas: GroupMetas = Map()) extends Product with Serializable

    Data used to create an A/B tests

    Data used to create an A/B tests

    name

    name of the test, it's more like a note/description. It is NOT an identifier.

    feature

    feature name of the treatment. This is an identifier with which feature code can determine for each user which treatment they get.

    author

    author name. Can be used for ownership

    start

    scheduled start of the test

    end

    scheduled end of the test, optional, if not given the test will last indefinitely

    groups

    group definitions. group sizes don't have to add up to 1, but they cannot go beyond 1. If the sum group size is less than 1, it means that there is a portion (1 - the sum group size) of users won't be the in tests at all, you could make this group your control group.

    requiredTags

    an array of string tags for eligibility control. Once set, only users having these tags (tags are passed in group assignment inquiry requests) are eligible for this test.

    alternativeIdName

    by default Thomas uses the "userId" field passed in the group assignment inquiry request as the unique identification for segmenting users. In some A/B test cases, e.g. some features in the user registration process, a user Id might not be given yet. In such cases, you can choose to use any user meta field as the unique identification for users.

    userMetaCriteria

    this is more advanced eligibility control. You can set a field and criterion pair to match user meta. Only users whose metadata field value matches the criterion are eligible for the experiment.

    reshuffle

    by default Thomas will try to keep the user assignment consistent between different versions of experiments of a feature. Setting this field to true will redistribute users again among all groups.

    segmentRanges

    his field is used for creating mutually exclusive tests. When Thomas segments users into different groups, it hashes the user Id to a number between 0 and 1. If an A/B test is set with a set of segment ranges, then only hashes within that range will be eligible for that test. Thus if two tests have non-overlapping segment ranges, they will be mutually exclusive, i.e. users who eligible for one will not be eligible for the other.

  3. sealed trait EligibilityControlFilter extends AnyRef
  4. case class Feature(name: FeatureName, description: Option[String], overrides: Overrides, overrideEligibility: Boolean = false, lockedAt: Option[Instant] = None, developers: List[Username] = Nil) extends Product with Serializable
  5. case class Group(name: GroupName, size: GroupSize, meta: Option[GroupMeta]) extends Product with Serializable
  6. type GroupMeta = JsObject
  7. type GroupMetas = Map[GroupName, GroupMeta]
  8. case class GroupRange(start: BigDecimal, end: BigDecimal) extends Product with Serializable
  9. type GroupRanges = Map[GroupName, List[GroupRange]]
  10. type GroupSize = BigDecimal
  11. type MetaFieldName = String
  12. type Overrides = Map[UserId, GroupName]
  13. type Tag = String
  14. type TestId = Type
  15. type TestName = String
  16. case class UserGroupQuery(userId: Option[UserId], at: Option[OffsetDateTime] = None, tags: List[Tag] = Nil, meta: UserMeta = Map(), features: List[FeatureName] = Nil, eligibilityControlFilter: EligibilityControlFilter = EligibilityControlFilter.All) extends Product with Serializable

    eligibilityControlFilter

    indicate whether to include tests with eligibility control

  17. case class UserGroupQueryResult(at: Instant, groups: Map[FeatureName, GroupName], metas: Map[FeatureName, GroupMeta]) extends Product with Serializable
  18. case class UserInfo(userId: Option[UserId], meta: UserMeta = Map()) extends Product with Serializable
  19. type UserMeta = Map[MetaFieldName, String]
  20. type UserMetaCriteria = Option[And]
  21. sealed trait UserMetaCriterion extends Serializable with Product
  22. type Weight = Double

Inherited from AnyRef

Inherited from Any

Ungrouped