Documentation ¶
Overview ¶
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Index ¶
- type CandidateAssessment
- type CounterMetric
- type Criterion
- type CriterionAssessment
- type Interval
- type Metrics
- type RatioMetric
- type RatioStatistics
- type Request
- type Response
- type Statistics
- type Threshold
- type ThresholdAssessment
- type TrafficControl
- type Version
- type VersionAssessment
- type WinnerAssessment
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CandidateAssessment ¶
type CandidateAssessment struct { VersionAssessment `json:",inline"` // A flag indicates whether traffic to this candidate should be cutoff Rollback bool `json:"rollback"` }
CandidateAssessment contains assessment for a candidate
func (*CandidateAssessment) DeepCopy ¶
func (in *CandidateAssessment) DeepCopy() *CandidateAssessment
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CandidateAssessment.
func (*CandidateAssessment) DeepCopyInto ¶
func (in *CandidateAssessment) DeepCopyInto(out *CandidateAssessment)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type CounterMetric ¶
type CounterMetric struct { // Unique identifier Name string `json:"name"` // Direction indicating which values are "better" //+kubebuilder:validation:Enum={lower,higher} PreferredDirection *string `json:"preferred_direction,omitempty"` // Descriptive short name DescriptiveShortName *string `json:"descriptive_short_name,omitempty"` // Query template of this metric QueryTemplate string `json:"query_template"` }
CounterMetric is the definition of Counter Metric
type Criterion ¶
type Criterion struct { ID string `json:"id"` MetricID string `json:"metric_id"` IsReward *bool `json:"is_reward,omitempty"` Threshold *Threshold `json:"threshold,omitempty"` }
Criterion includes an assessment details for each version
type CriterionAssessment ¶
type CriterionAssessment struct { // Id of version ID string `json:"id"` // ID of metric MetricID string `json:"metric_id"` //Statistics for this metric Statistics *Statistics `json:"statistics,omitempty"` // Assessment of how well this metric is doing with respect to threshold. // Defined only for metrics with a threshold ThresholdAssessment *ThresholdAssessment `json:"threshold_assessment,omitempty"` }
CriterionAssessment contains assessment for a version
func (*CriterionAssessment) DeepCopy ¶
func (in *CriterionAssessment) DeepCopy() *CriterionAssessment
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CriterionAssessment.
func (*CriterionAssessment) DeepCopyInto ¶
func (in *CriterionAssessment) DeepCopyInto(out *CriterionAssessment)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Metrics ¶
type Metrics struct { CounterMetrics []CounterMetric `json:"counter_metrics"` RatioMetrics []RatioMetric `json:"ratio_metrics"` }
Metrics details
type RatioMetric ¶
type RatioMetric struct { // Unique identifier Name string `json:"name"` // Direction indicating which values are "better" //+kubebuilder:validation:Enum={lower,higher} PreferredDirection *string `json:"preferred_direction,omitempty"` // Descriptive short name DescriptiveShortName *string `json:"descriptive_short_name,omitempty"` // Counter metric used in numerator Numerator string `json:"numerator"` // Counter metric used in denominator Denominator string `json:"denominator"` // Boolean flag indicating if the value of this metric is always in the range 0 to 1 // +optional ZeroToOne *bool `json:"zero_to_one,omitempty"` }
RatioMetric is the definiton of Ratio Metric
type RatioStatistics ¶
type RatioStatistics struct { ImprovementOverBaseline Interval `json:"improvement_over_baseline"` ProbabilityOfBeatingBaseline float32 `json:"probability_of_beating_baseline"` ProbabilityOfBeingBestVersion float32 `json:"probability_of_being_best_version"` CredibleInterval Interval `json:"credible_interval"` }
RatioStatistics is statistics for a ratio metric
func (*RatioStatistics) DeepCopy ¶
func (in *RatioStatistics) DeepCopy() *RatioStatistics
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RatioStatistics.
func (*RatioStatistics) DeepCopyInto ¶
func (in *RatioStatistics) DeepCopyInto(out *RatioStatistics)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Request ¶
type Request struct { // Name of experiment Name string `json:"name"` // ISO8601 timestamp for the beginning of the time range of interest StartTime string `json:"start_time"` // Name of the service ServiceName string `json:"service_name"` // Current iteration of the experiment IterationNumber *int32 `json:"iteration_number,omitempty"` // All metric specification MetricSpecs Metrics `json:"metric_specs"` // Criteria to be assessed for each version in this experiment Criteria []Criterion `json:"criteria"` // Baseline verison details Baseline Version `json:"baseline"` // Candidate versions details Candidate []Version `json:"candidates"` // State returned by the server on the previous call LastState interface{} `json:"last_state,omitempty"` // Parameters controlling the behavior of the analytics TrafficControl *TrafficControl `json:"traffic_control,omitempty"` }
Request defines payload to analytics service
type Response ¶
type Response struct { // Timestamp when assessment is made Timestamp string `json:"timestamp"` // Assessment for baseline BaselineAssessment VersionAssessment `json:"baseline_assessment"` // Assessment for candidates CandidateAssessments []CandidateAssessment `json:"candidate_assessments"` // TrafficSplitRecommendation contains traffic split recommendations for versions from each algorithm // The map is interprted as {name_of_algorithm: {name_of_version: traffic_amount}} TrafficSplitRecommendation map[string]map[string]int32 `json:"traffic_split_recommendation"` // Assessment for winner WinnerAssessment `json:"winner_assessment"` // Status of analytics engine Status *[]string `json:"status,omitempty"` // Human-readable explanation of the status StatusInterpretations *map[string]string `json:"status_interpretations,omitempty"` // Last recorded state from analytics service LastState *interface{} `json:"last_state,omitempty"` }
Response from analytics
type Statistics ¶
type Statistics struct { Value *float32 `json:"value,omitempty"` RatioStatistics *RatioStatistics `json:"ratio_statistics,omitempty"` }
Statistics for a metric
func (*Statistics) DeepCopy ¶
func (in *Statistics) DeepCopy() *Statistics
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Statistics.
func (*Statistics) DeepCopyInto ¶
func (in *Statistics) DeepCopyInto(out *Statistics)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ThresholdAssessment ¶
type ThresholdAssessment struct { // A flag indicating whether threshold is breached ThresholdBreached bool `json:"threshold_breached"` // Probability of satisfying the threshold. // Defined only for ratio metrics. This is currently computed based on Bayesian estimation ProbabilityOfSatisfyingTHreshold float32 `json:"probability_of_satisfying_threshold"` }
ThresholdAssessment is the assessment for a threshold
func (*ThresholdAssessment) DeepCopy ¶
func (in *ThresholdAssessment) DeepCopy() *ThresholdAssessment
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ThresholdAssessment.
func (*ThresholdAssessment) DeepCopyInto ¶
func (in *ThresholdAssessment) DeepCopyInto(out *ThresholdAssessment)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type TrafficControl ¶
type TrafficControl struct { // Maximum possible increment in a candidate's traffic during the initial phase of the experiment MaxIncrement float32 `json:"max_increment"` // Traffic split algorithm to use during the experiment Strategy string `json:"strategy"` }
TrafficControl details
type Version ¶
type Version struct { // Name of the version ID string `json:"id"` // labels for the version VersionLabels map[string]string `json:"version_labels"` }
Version specifies details of a version
type VersionAssessment ¶
type VersionAssessment struct { ID string `json:"id"` WinProbability float32 `json:"win_probability"` RequestCount int32 `json:"request_count"` CriterionAssessments []CriterionAssessment `json:"criterion_assessments,omitempty"` }
VersionAssessment contains assessment details for a version
func (*VersionAssessment) DeepCopy ¶
func (in *VersionAssessment) DeepCopy() *VersionAssessment
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VersionAssessment.
func (*VersionAssessment) DeepCopyInto ¶
func (in *VersionAssessment) DeepCopyInto(out *VersionAssessment)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type WinnerAssessment ¶
type WinnerAssessment struct { // Indicates whether or not a clear winner has emerged // This is currently computed based on Bayesian estimation and uses posterior_probability_for_winner from the iteration parameters WinnerFound bool `json:"winning_version_found"` // ID of the current winner with the maximum probability of winning. // This is currently computed based on Bayesian estimation Winner string `json:"current_best_version,omitempty"` //Posterior probability of the version declared as the current winner. // This is None if winner is None. This is currently computed based on Bayesian estimation Probability float32 `json:"probability_of_winning_for_best_version,omitempty"` }
WinnerAssessment contains assessment for a winner version
func (*WinnerAssessment) DeepCopy ¶
func (in *WinnerAssessment) DeepCopy() *WinnerAssessment
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WinnerAssessment.
func (*WinnerAssessment) DeepCopyInto ¶
func (in *WinnerAssessment) DeepCopyInto(out *WinnerAssessment)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.