Skip to content

Commit

Permalink
Update cross-media-measurement-api to 0.43.0 (#1226)
Browse files Browse the repository at this point in the history
This incorporates the Custom methodology for the Direct protocol.
  • Loading branch information
riemanli authored Sep 21, 2023
1 parent 2e99fff commit 24deb7d
Show file tree
Hide file tree
Showing 10 changed files with 68 additions and 128 deletions.
4 changes: 2 additions & 2 deletions build/repositories.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,8 @@ def wfa_measurement_system_repositories():
wfa_repo_archive(
name = "wfa_measurement_proto",
repo = "cross-media-measurement-api",
sha256 = "b6ee5ff56c8c8ec8f6f44c93fe273d4120779dcd0954e9d69929137da2b2a4a7",
version = "0.42.0",
sha256 = "2106c2fd73775f5b0ad8d02c0ac01761b497920b363e1c90f12663d5321f5873",
version = "0.43.0",
)

wfa_repo_archive(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -120,14 +120,6 @@ import org.wfanet.measurement.internal.kingdom.protocolConfig as internalProtoco
import org.wfanet.measurement.kingdom.deploy.common.Llv2ProtocolConfig
import org.wfanet.measurement.kingdom.deploy.common.RoLlv2ProtocolConfig

/**
* Default maximum frequency used in the direct distribution methodology.
*
* TODO(world-federation-of-advertisers/cross-media-measurement-api#160): this value won't be needed
* once the maximum frequency field is moved to measurement spec
*/
const val DEFAULT_MAXIMUM_FREQUENCY_DIRECT_DISTRIBUTION = 20

/** Default options of direct noise mechanisms to data providers. */
val DEFAULT_DIRECT_NOISE_MECHANISMS: List<NoiseMechanism> =
listOf(
Expand All @@ -145,6 +137,7 @@ val DEFAULT_DIRECT_NOISE_MECHANISMS: List<NoiseMechanism> =
*/
val DEFAULT_DIRECT_REACH_PROTOCOL_CONFIG: ProtocolConfig.Direct = direct {
noiseMechanisms += DEFAULT_DIRECT_NOISE_MECHANISMS
customDirectMethodology = ProtocolConfig.Direct.CustomDirectMethodology.getDefaultInstance()
deterministicCountDistinct = ProtocolConfig.Direct.DeterministicCountDistinct.getDefaultInstance()
liquidLegionsCountDistinct = ProtocolConfig.Direct.LiquidLegionsCountDistinct.getDefaultInstance()
}
Expand All @@ -157,6 +150,7 @@ val DEFAULT_DIRECT_REACH_PROTOCOL_CONFIG: ProtocolConfig.Direct = direct {
*/
val DEFAULT_DIRECT_REACH_AND_FREQUENCY_PROTOCOL_CONFIG: ProtocolConfig.Direct = direct {
noiseMechanisms += DEFAULT_DIRECT_NOISE_MECHANISMS
customDirectMethodology = ProtocolConfig.Direct.CustomDirectMethodology.getDefaultInstance()
deterministicCountDistinct = ProtocolConfig.Direct.DeterministicCountDistinct.getDefaultInstance()
liquidLegionsCountDistinct = ProtocolConfig.Direct.LiquidLegionsCountDistinct.getDefaultInstance()
deterministicDistribution = ProtocolConfig.Direct.DeterministicDistribution.getDefaultInstance()
Expand All @@ -170,6 +164,7 @@ val DEFAULT_DIRECT_REACH_AND_FREQUENCY_PROTOCOL_CONFIG: ProtocolConfig.Direct =
*/
val DEFAULT_DIRECT_IMPRESSION_PROTOCOL_CONFIG = direct {
noiseMechanisms += DEFAULT_DIRECT_NOISE_MECHANISMS
customDirectMethodology = ProtocolConfig.Direct.CustomDirectMethodology.getDefaultInstance()
deterministicCount = ProtocolConfig.Direct.DeterministicCount.getDefaultInstance()
}

Expand All @@ -181,6 +176,7 @@ val DEFAULT_DIRECT_IMPRESSION_PROTOCOL_CONFIG = direct {
*/
val DEFAULT_DIRECT_WATCH_DURATION_PROTOCOL_CONFIG = direct {
noiseMechanisms += DEFAULT_DIRECT_NOISE_MECHANISMS
customDirectMethodology = ProtocolConfig.Direct.CustomDirectMethodology.getDefaultInstance()
deterministicSum = ProtocolConfig.Direct.DeterministicSum.getDefaultInstance()
}

Expand Down Expand Up @@ -460,6 +456,9 @@ private fun InternalProtocolConfig.Direct.toDirect(): ProtocolConfig.Direct {
internalNoiseMechanism.toNoiseMechanism()
}

if (source.hasCustomDirectMethodology()) {
customDirectMethodology = ProtocolConfig.Direct.CustomDirectMethodology.getDefaultInstance()
}
if (source.hasDeterministicCountDistinct()) {
deterministicCountDistinct =
ProtocolConfig.Direct.DeterministicCountDistinct.getDefaultInstance()
Expand Down Expand Up @@ -950,6 +949,8 @@ fun Measurement.toInternal(
direct =
InternalProtocolConfigKt.direct {
noiseMechanisms += internalNoiseMechanisms
customDirectMethodology =
InternalProtocolConfig.Direct.CustomDirectMethodology.getDefaultInstance()
deterministicCountDistinct =
InternalProtocolConfig.Direct.DeterministicCountDistinct.getDefaultInstance()
liquidLegionsCountDistinct =
Expand All @@ -972,18 +973,16 @@ fun Measurement.toInternal(
direct =
InternalProtocolConfigKt.direct {
noiseMechanisms += internalNoiseMechanisms
customDirectMethodology =
InternalProtocolConfig.Direct.CustomDirectMethodology.getDefaultInstance()
deterministicCountDistinct =
InternalProtocolConfig.Direct.DeterministicCountDistinct.getDefaultInstance()
liquidLegionsCountDistinct =
InternalProtocolConfig.Direct.LiquidLegionsCountDistinct.getDefaultInstance()
deterministicDistribution =
InternalProtocolConfigKt.DirectKt.deterministicDistribution {
maximumFrequency = DEFAULT_MAXIMUM_FREQUENCY_DIRECT_DISTRIBUTION
}
InternalProtocolConfig.Direct.DeterministicDistribution.getDefaultInstance()
liquidLegionsDistribution =
InternalProtocolConfigKt.DirectKt.liquidLegionsDistribution {
maximumFrequency = DEFAULT_MAXIMUM_FREQUENCY_DIRECT_DISTRIBUTION
}
InternalProtocolConfig.Direct.LiquidLegionsDistribution.getDefaultInstance()
}
}
}
Expand All @@ -993,6 +992,8 @@ fun Measurement.toInternal(
direct =
InternalProtocolConfigKt.direct {
noiseMechanisms += internalNoiseMechanisms
customDirectMethodology =
InternalProtocolConfig.Direct.CustomDirectMethodology.getDefaultInstance()
deterministicCount =
InternalProtocolConfig.Direct.DeterministicCount.getDefaultInstance()
}
Expand All @@ -1003,6 +1004,8 @@ fun Measurement.toInternal(
direct =
InternalProtocolConfigKt.direct {
noiseMechanisms += internalNoiseMechanisms
customDirectMethodology =
InternalProtocolConfig.Direct.CustomDirectMethodology.getDefaultInstance()
deterministicSum =
InternalProtocolConfig.Direct.DeterministicSum.getDefaultInstance()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ import org.wfanet.measurement.api.v2alpha.SignedData
import org.wfanet.measurement.api.v2alpha.copy
import org.wfanet.measurement.api.v2alpha.createEventGroupMetadataDescriptorRequest
import org.wfanet.measurement.api.v2alpha.createEventGroupRequest
import org.wfanet.measurement.api.v2alpha.customDirectMethodology
import org.wfanet.measurement.api.v2alpha.eventGroup
import org.wfanet.measurement.api.v2alpha.eventGroupMetadataDescriptor
import org.wfanet.measurement.api.v2alpha.event_templates.testing.TestEvent
Expand Down Expand Up @@ -1316,8 +1317,7 @@ class EdpSimulator(
// TODO: Calculate impression from data.
value = apiIdToExternalId(DataProviderKey.fromName(edpData.name)!!.dataProviderId)
noiseMechanism = protocolConfigNoiseMechanism
// TODO(@riemanli): specify impression computation methodology once the real impression
// calculation is done.
customDirectMethodology = customDirectMethodology { variance = 0.0 }
}
}
}
Expand All @@ -1332,8 +1332,7 @@ class EdpSimulator(
seconds = log2(externalDataProviderId.toDouble()).toLong()
}
noiseMechanism = protocolConfigNoiseMechanism
// TODO(@riemanli): specify duration computation methodology once the real duration
// calculation is done.
customDirectMethodology = customDirectMethodology { variance = 0.0 }
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ import org.wfanet.measurement.api.v2alpha.RequisitionSpecKt.eventGroupEntry
import org.wfanet.measurement.api.v2alpha.SignedData
import org.wfanet.measurement.api.v2alpha.copy
import org.wfanet.measurement.api.v2alpha.createMeasurementRequest
import org.wfanet.measurement.api.v2alpha.customDirectMethodology
import org.wfanet.measurement.api.v2alpha.differentialPrivacyParams
import org.wfanet.measurement.api.v2alpha.event_templates.testing.Person
import org.wfanet.measurement.api.v2alpha.getCertificateRequest
Expand Down Expand Up @@ -318,8 +319,8 @@ class MeasurementConsumerSimulator(
// EdpSimulator sets it to this value.
apiIdToExternalId(DataProviderCertificateKey.fromName(it.certificate)!!.dataProviderId)
)
// EdpSimulator hasn't had an implementation for impression.
assertThat(!result.impression.hasDeterministicCount()).isTrue()
assertThat(result.impression.customDirectMethodology)
.isEqualTo(customDirectMethodology { variance = 0.0 })
assertThat(result.impression.noiseMechanism).isEqualTo(expectedDirectNoiseMechanism)
}
logger.info("Impression result is equal to the expected result")
Expand Down Expand Up @@ -347,7 +348,8 @@ class MeasurementConsumerSimulator(
log2(externalDataProviderId.toDouble()).toLong()
)
// EdpSimulator hasn't had an implementation for watch duration.
assertThat(!result.watchDuration.hasDeterministicSum()).isTrue()
assertThat(result.watchDuration.customDirectMethodology)
.isEqualTo(customDirectMethodology { variance = 0.0 })
assertThat(result.watchDuration.noiseMechanism).isEqualTo(expectedDirectNoiseMechanism)
}
logger.info("Duration result is equal to the expected result")
Expand Down
4 changes: 0 additions & 4 deletions src/main/proto/wfa/measurement/internal/kingdom/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -136,10 +136,6 @@ proto_and_java_proto_library(
name = "differential_privacy",
)

proto_and_java_proto_library(
name = "direct_computation",
)

proto_and_java_proto_library(
name = "duchy_protocol_config",
deps = [
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -44,24 +44,20 @@ message ProtocolConfig {
// The `DataProvider` may choose from the specified noise mechanisms and
// methodologies.
message Direct {
// Configuration parameters for custom direct methodology.
message CustomDirectMethodology {}
// Configuration parameters for the deterministic count distinct
// methodology.
message DeterministicCountDistinct {}
// Configuration parameters for the deterministic distribution methodology.
message DeterministicDistribution {
// The maximum frequency to reveal in the distribution.
int32 maximum_frequency = 1;
}
message DeterministicDistribution {}
// Configuration parameters for the deterministic count methodology.
message DeterministicCount {}
// Configuration parameters for the deterministic sum methodology.
message DeterministicSum {}
// Configuration parameters for the direct Liquid Legions distribution
// methodology.
message LiquidLegionsDistribution {
// The maximum frequency to reveal in the distribution.
int32 maximum_frequency = 1;
}
message LiquidLegionsDistribution {}
// Configuration parameters for the direct Liquid Legions count distinct
// methodology.
message LiquidLegionsCountDistinct {}
Expand All @@ -70,35 +66,41 @@ message ProtocolConfig {
// computation.
repeated NoiseMechanism noise_mechanisms = 1;

// Custom direct methodology.
//
// Used when data provider wants to use a methodology that is not listed in
// protocol config to compute direct measurements.
CustomDirectMethodology custom_direct_methodology = 2;

// Deterministic count distinct methodology.
//
// Can be used in reach computations.
DeterministicCountDistinct deterministic_count_distinct = 2;
DeterministicCountDistinct deterministic_count_distinct = 3;

// Deterministic distribution methodology.
//
// Can be used in frequency computations.
DeterministicDistribution deterministic_distribution = 3;
DeterministicDistribution deterministic_distribution = 4;

// Deterministic count methodology.
//
// Can be used in impression computations.
DeterministicCount deterministic_count = 4;
DeterministicCount deterministic_count = 5;

// Deterministic sum methodology.
//
// Can be used in watch duration computations.
DeterministicSum deterministic_sum = 5;
DeterministicSum deterministic_sum = 6;

// Liquid Legions count distinct methodology.
//
// Can be used in reach computations.
LiquidLegionsCountDistinct liquid_legions_count_distinct = 6;
LiquidLegionsCountDistinct liquid_legions_count_distinct = 7;

// Liquid Legions distribution methodology.
//
// Can be used in frequency computations.
LiquidLegionsDistribution liquid_legions_distribution = 7;
LiquidLegionsDistribution liquid_legions_distribution = 8;
}

// Configuration for Liquid Legions v2 protocols.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2048,43 +2048,36 @@ class MeasurementsServiceTest {
InternalNoiseMechanism.CONTINUOUS_GAUSSIAN
)

private val DEFAULT_INTERNAL_DIRECT_REACH_PROTOCOL_CONFIG: InternalProtocolConfig.Direct =
direct {
noiseMechanisms += DEFAULT_INTERNAL_DIRECT_NOISE_MECHANISMS
deterministicCountDistinct =
InternalProtocolConfig.Direct.DeterministicCountDistinct.getDefaultInstance()
liquidLegionsCountDistinct =
InternalProtocolConfig.Direct.LiquidLegionsCountDistinct.getDefaultInstance()
}

private val DEFAULT_INTERNAL_DIRECT_REACH_AND_FREQUENCY_PROTOCOL_CONFIG:
InternalProtocolConfig.Direct =
direct {
noiseMechanisms += DEFAULT_INTERNAL_DIRECT_NOISE_MECHANISMS
customDirectMethodology =
InternalProtocolConfig.Direct.CustomDirectMethodology.getDefaultInstance()
deterministicCountDistinct =
InternalProtocolConfig.Direct.DeterministicCountDistinct.getDefaultInstance()
liquidLegionsCountDistinct =
InternalProtocolConfig.Direct.LiquidLegionsCountDistinct.getDefaultInstance()
deterministicDistribution =
InternalProtocolConfigKt.DirectKt.deterministicDistribution {
maximumFrequency = DEFAULT_MAXIMUM_FREQUENCY_DIRECT_DISTRIBUTION
}
InternalProtocolConfig.Direct.DeterministicDistribution.getDefaultInstance()
liquidLegionsDistribution =
InternalProtocolConfigKt.DirectKt.liquidLegionsDistribution {
maximumFrequency = DEFAULT_MAXIMUM_FREQUENCY_DIRECT_DISTRIBUTION
}
InternalProtocolConfig.Direct.LiquidLegionsDistribution.getDefaultInstance()
}

private val DEFAULT_INTERNAL_DIRECT_IMPRESSION_PROTOCOL_CONFIG: InternalProtocolConfig.Direct =
direct {
noiseMechanisms += DEFAULT_INTERNAL_DIRECT_NOISE_MECHANISMS
customDirectMethodology =
InternalProtocolConfig.Direct.CustomDirectMethodology.getDefaultInstance()
deterministicCount = InternalProtocolConfig.Direct.DeterministicCount.getDefaultInstance()
}

private val DEFAULT_INTERNAL_DIRECT_WATCH_DURATION_PROTOCOL_CONFIG:
InternalProtocolConfig.Direct =
direct {
noiseMechanisms += DEFAULT_INTERNAL_DIRECT_NOISE_MECHANISMS
customDirectMethodology =
InternalProtocolConfig.Direct.CustomDirectMethodology.getDefaultInstance()
deterministicSum = InternalProtocolConfig.Direct.DeterministicSum.getDefaultInstance()
}

Expand Down
Loading

0 comments on commit 24deb7d

Please sign in to comment.