Class

com.iheart.thomas.abtest.model

AbtestSpec

Related Doc: package model

Permalink

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, matchingUserMeta: UserMeta = Map(), reshuffle: Boolean = false, segmentRanges: List[GroupRange] = Nil, groupMetas: GroupMetas = Map(), specialization: Option[Specialization] = None) extends Product with Serializable

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.

matchingUserMeta

this is more advanced eligibility control. You can set a field and regex pair to match user meta. Only users whose metadata field value matches the regex 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.

Linear Supertypes
Serializable, Serializable, Product, Equals, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. AbtestSpec
  2. Serializable
  3. Serializable
  4. Product
  5. Equals
  6. AnyRef
  7. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new AbtestSpec(name: TestName, feature: FeatureName, author: String, start: OffsetDateTime, end: Option[OffsetDateTime], groups: List[Group], requiredTags: List[Tag] = Nil, alternativeIdName: Option[MetaFieldName] = None, matchingUserMeta: UserMeta = Map(), reshuffle: Boolean = false, segmentRanges: List[GroupRange] = Nil, groupMetas: GroupMetas = Map(), specialization: Option[Specialization] = None)

    Permalink

    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.

    matchingUserMeta

    this is more advanced eligibility control. You can set a field and regex pair to match user meta. Only users whose metadata field value matches the regex 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.

Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. val alternativeIdName: Option[MetaFieldName]

    Permalink

    by default Thomas uses the "userId" field passed in the group assignment inquiry request as the unique identification for segmenting users.

    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.

  5. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  6. val author: String

    Permalink

    author name.

    author name. Can be used for ownership

  7. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  8. val end: Option[OffsetDateTime]

    Permalink

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

  9. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  10. val feature: FeatureName

    Permalink

    feature name of the treatment.

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

  11. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  12. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  13. val groupMetas: GroupMetas

    Permalink
  14. val groups: List[Group]

    Permalink

    group definitions.

    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.

  15. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  16. val matchingUserMeta: UserMeta

    Permalink

    this is more advanced eligibility control.

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

  17. val name: TestName

    Permalink

    name of the test, it's more like a note/description.

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

  18. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  19. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  20. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  21. val requiredTags: List[Tag]

    Permalink

    an array of string tags for eligibility control.

    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.

  22. val reshuffle: Boolean

    Permalink

    by default Thomas will try to keep the user assignment consistent between different versions of experiments of a feature.

    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.

  23. val segmentRanges: List[GroupRange]

    Permalink

    his field is used for creating mutually exclusive tests.

    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.

  24. val specialization: Option[Specialization]

    Permalink
  25. val start: OffsetDateTime

    Permalink

    scheduled start of the test

  26. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  27. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  28. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  29. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from Serializable

Inherited from Serializable

Inherited from Product

Inherited from Equals

Inherited from AnyRef

Inherited from Any

Ungrouped