From f7f331d4391b5fc0c91ab95b56ecd1da70a5a9fb Mon Sep 17 00:00:00 2001 From: Tim Middleton Date: Wed, 6 Aug 2025 08:39:40 +0800 Subject: [PATCH 1/5] Fix ordering of publishing --- coherence/topics.go | 37 ++-- .../coherence/go/testing/RestServer.java | 64 +++++-- test/e2e/standalone/java_object_test.go | 38 +--- test/e2e/topics/suite_test.go | 2 +- test/e2e/topics/topics_java_test.go | 163 ++++++++++++++++++ test/utils/utils.go | 20 +++ 6 files changed, 273 insertions(+), 51 deletions(-) create mode 100644 test/e2e/topics/topics_java_test.go diff --git a/coherence/topics.go b/coherence/topics.go index 2318aab..cb8c228 100644 --- a/coherence/topics.go +++ b/coherence/topics.go @@ -19,6 +19,7 @@ import ( pb1 "github.com/oracle/coherence-go-client/v2/proto/v1" "google.golang.org/protobuf/types/known/anypb" "google.golang.org/protobuf/types/known/wrapperspb" + "math/rand/v2" "strings" "sync" ) @@ -190,6 +191,7 @@ type topicPublisher[V any] struct { proxyID int32 publisherID int64 channelCount int32 + defaultOrderingSeed int32 options *publisher.Options valueSerializer Serializer[V] mutex sync.RWMutex @@ -213,7 +215,12 @@ func (tp *topicPublisher[V]) Publish(ctx context.Context, value V) (*publisher.P return nil, ErrPublisherClosed } - publishChannel := tp.ensureTopicChannel() + var publishChannel = tp.defaultOrderingSeed // use defaultOrderingSeed as default + + if tp.defaultOrderingSeed == -1 { + // use the hash from ordering option + publishChannel = tp.ensureTopicChannel() + } binValue, err := tp.valueSerializer.Serialize(value) if err != nil { @@ -327,16 +334,26 @@ func (bt *baseTopicsClient[V]) setReleased() { func newPublisher[V any](session *Session, bt *baseTopicsClient[V], result *publisher.EnsurePublisherResult, topicName string, options *publisher.Options) (Publisher[V], error) { tp := &topicPublisher[V]{ - namedTopic: bt, - publisherID: result.PublisherID, - session: session, - options: options, - valueSerializer: NewSerializer[V](session.sessOpts.Format), - topicName: topicName, - proxyID: result.ProxyID, - channelCount: result.ChannelCount, - isClosed: false, + namedTopic: bt, + publisherID: result.PublisherID, + session: session, + options: options, + valueSerializer: NewSerializer[V](session.sessOpts.Format), + topicName: topicName, + proxyID: result.ProxyID, + defaultOrderingSeed: -1, + channelCount: result.ChannelCount, + isClosed: false, + } + + ordering := options.GetOrdering() + if _, ok := ordering.(*publisher.OrderByDefault); ok { + // set the defaultOrderSeed to a non -1 value which means to use this number for the channel + //hash all the time. + // #nosec G404 -- math/rand is fine here for non-security use + tp.defaultOrderingSeed = rand.Int32() % tp.channelCount } + session.mapMutex.Lock() defer session.mapMutex.Unlock() session.publishers[result.PublisherID] = tp diff --git a/java/coherence-go-test/src/main/java/com/oracle/coherence/go/testing/RestServer.java b/java/coherence-go-test/src/main/java/com/oracle/coherence/go/testing/RestServer.java index 56ece06..e041ba5 100644 --- a/java/coherence-go-test/src/main/java/com/oracle/coherence/go/testing/RestServer.java +++ b/java/coherence-go-test/src/main/java/com/oracle/coherence/go/testing/RestServer.java @@ -16,29 +16,31 @@ import java.util.HashSet; import java.util.Map; import java.util.Set; -import java.util.concurrent.ExecutionException; -import java.util.logging.Logger; +import java.util.concurrent.CancellationException; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; -import com.tangosol.net.CacheFactory; -import com.tangosol.net.Cluster; -import com.tangosol.net.Coherence; -import com.tangosol.net.CoherenceConfiguration; -import com.tangosol.net.DefaultCacheServer; -import com.tangosol.net.NamedCache; +import com.tangosol.net.*; import com.sun.net.httpserver.HttpExchange; import com.sun.net.httpserver.HttpServer; -import com.tangosol.net.NamedMap; -import com.tangosol.net.SessionConfiguration; + import com.tangosol.net.management.MBeanServerProxy; + import com.tangosol.net.topic.NamedTopic; +import com.tangosol.net.topic.Publisher; +import com.tangosol.net.topic.Subscriber; + +import static com.tangosol.net.topic.Subscriber.Name.inGroup; +import static com.tangosol.util.Base.log; /** * A simple Http server that is deployed into a Coherence cluster * and can be used to perform various tests. * - * @author jk 2019.08.09 + * @author jk 2019.08.09 * @author tam 2022.02.08 */ public class RestServer { @@ -74,6 +76,7 @@ public static void main(String[] args) { server.createContext("/isIsReadyPresent", RestServer::isIsReadyPresent); server.createContext("/populateQueue", RestServer::populateQueue); server.createContext("/destroyTopic", RestServer::destroyTopic); + server.createContext("/createCustomerTopic", RestServer::createCustomerTopic); server.setExecutor(null); // creates a default executor server.start(); @@ -143,6 +146,45 @@ private static void destroyTopic(HttpExchange t) throws IOException { send(t, 200, "OK"); } + private static void createCustomerTopic(HttpExchange t) throws IOException { + try { + URI uri = t.getRequestURI(); + String path = uri.getPath(); + String[] pathComponents = path.split("/"); + + if (pathComponents.length < 4 || !pathComponents[pathComponents.length - 3].equals("createCustomerTopic")) { + t.sendResponseHeaders(400, -1); // Bad Request + return; + } + + String topicName = pathComponents[pathComponents.length - 2]; + int count = Integer.parseInt(pathComponents[pathComponents.length - 1]); + + Coherence coherence = Coherence.getInstance(); + if (coherence == null) { + coherence = Coherence.clusterMember().start().get(); + } + Session session = coherence.getSession(); + + NamedTopic topic = session.getTopic(topicName); + Publisher publisher = topic.createPublisher(); + + for (int i = 0; i < count; i++) { + Customer customer = new Customer(i, "name-" + i, getAddress(i), getAddress(i), Customer.GOLD, 1000* i); + publisher.publish(customer).join(); + } + publisher.close(); + } catch (Exception e) { + e.printStackTrace(); + send(t, 404, "Error: " + e.getMessage()); + } + send(t, 200, "OK"); + } + + private static Address getAddress(int id) { + return new Address("address-line-1-" + id, "address-line-2-" + id, "Suburb-" + id, "City-" + id, "State-" + id, id); + } + private static void ready(HttpExchange t) throws IOException { send(t, 200, "OK"); } diff --git a/test/e2e/standalone/java_object_test.go b/test/e2e/standalone/java_object_test.go index ba19507..c17024f 100644 --- a/test/e2e/standalone/java_object_test.go +++ b/test/e2e/standalone/java_object_test.go @@ -13,26 +13,6 @@ import ( "testing" ) -type Customer struct { - Class string `json:"@class"` - ID int `json:"id"` - CustomerName string `json:"customerName"` - HomeAddress CustomerAddress `json:"homeAddress"` - PostalAddress CustomerAddress `json:"postalAddress"` - CustomerType string `json:"customerType"` - OutstandingBalance float32 `json:"outstandingBalance"` -} - -type CustomerAddress struct { - Class string `json:"@class"` - AddressLine1 string `json:"addressLine1"` - AddressLine2 string `json:"addressLine2"` - Suburb string `json:"suburb"` - City string `json:"city"` - State string `json:"state"` - PostCode int `json:"postCode"` -} - // TestBasicOperationsAgainstMapAndCache runs all tests against NamedMap and NamedCache func TestJavaSerializationAgainstMapAndCache(t *testing.T) { g := gomega.NewWithT(t) @@ -42,11 +22,11 @@ func TestJavaSerializationAgainstMapAndCache(t *testing.T) { testCases := []struct { testName string - nameMap coherence.NamedMap[int, Customer] - test func(t *testing.T, namedCache coherence.NamedMap[int, Customer]) + nameMap coherence.NamedMap[int, utils.Customer] + test func(t *testing.T, namedCache coherence.NamedMap[int, utils.Customer]) }{ - {"NamedMapSerializationTest", GetNamedMap[int, Customer](g, session, "customer-map"), RunSerializationTest}, - {"NamedCacheSerializationTest", GetNamedCache[int, Customer](g, session, "customer-cache"), RunSerializationTest}, + {"NamedMapSerializationTest", GetNamedMap[int, utils.Customer](g, session, "customer-map"), RunSerializationTest}, + {"NamedCacheSerializationTest", GetNamedCache[int, utils.Customer](g, session, "customer-cache"), RunSerializationTest}, } for _, tc := range testCases { t.Run(tc.testName, func(t *testing.T) { @@ -55,10 +35,10 @@ func TestJavaSerializationAgainstMapAndCache(t *testing.T) { } } -func RunSerializationTest(t *testing.T, namedMap coherence.NamedMap[int, Customer]) { +func RunSerializationTest(t *testing.T, namedMap coherence.NamedMap[int, utils.Customer]) { var ( g = gomega.NewWithT(t) - result *Customer + result *utils.Customer err error ) @@ -71,7 +51,7 @@ func RunSerializationTest(t *testing.T, namedMap coherence.NamedMap[int, Custome err = namedMap.Clear(ctx) g.Expect(err).ShouldNot(gomega.HaveOccurred()) - homeAddress := CustomerAddress{ + homeAddress := utils.CustomerAddress{ Class: addressClass, AddressLine1: "123 James Street", Suburb: "Balcatta", @@ -80,7 +60,7 @@ func RunSerializationTest(t *testing.T, namedMap coherence.NamedMap[int, Custome PostCode: 6000, } - postalAddress := CustomerAddress{ + postalAddress := utils.CustomerAddress{ Class: addressClass, AddressLine1: "PO Box 1000", AddressLine2: "Balcatta Post Office", @@ -90,7 +70,7 @@ func RunSerializationTest(t *testing.T, namedMap coherence.NamedMap[int, Custome PostCode: 6000, } - customer := Customer{ + customer := utils.Customer{ Class: customerClass, ID: 1, CustomerName: "Tim", diff --git a/test/e2e/topics/suite_test.go b/test/e2e/topics/suite_test.go index c14a59d..e03ba8e 100644 --- a/test/e2e/topics/suite_test.go +++ b/test/e2e/topics/suite_test.go @@ -13,5 +13,5 @@ import ( // The entry point for the test suite func TestMain(m *testing.M) { - utils.RunTest(m, 1408, 30000, 8080, true) + utils.RunTest(m, 1408, 30000, 8080, false) } diff --git a/test/e2e/topics/topics_java_test.go b/test/e2e/topics/topics_java_test.go new file mode 100644 index 0000000..947e786 --- /dev/null +++ b/test/e2e/topics/topics_java_test.go @@ -0,0 +1,163 @@ +/* + * Copyright (c) 2025 Oracle and/or its affiliates. + * Licensed under the Universal Permissive License v 1.0 as shown at + * https://oss.oracle.com/licenses/upl. + */ + +package topics + +import ( + "context" + "fmt" + "github.com/onsi/gomega" + "github.com/oracle/coherence-go-client/v2/coherence" + "github.com/oracle/coherence-go-client/v2/coherence/publisher" + "github.com/oracle/coherence-go-client/v2/coherence/subscriber" + "github.com/oracle/coherence-go-client/v2/test/utils" + "strconv" + "testing" + "time" +) + +// these must be defined in META-INF/type-aliases.properties on the server like: +// test.customer=com.oracle.coherence.go.testing.Customer +// test.address=com.oracle.coherence.go.testing.Address + +const ( + customerClass = "test.customer" + addressClass = "test.address" +) + +func TestTopicsJavaObjectsCreatedOnServer(t *testing.T) { + RunTestTopicsJavaObjectsOnServer(gomega.NewWithT(t), true) +} + +func TestTopicsJavaObjectsCreatedOnClient(t *testing.T) { + RunTestTopicsJavaObjectsOnServer(gomega.NewWithT(t), false) +} + +func RunTestTopicsJavaObjectsOnServer(g *gomega.GomegaWithT, createOnServer bool) { + var ( + err error + ctx = context.Background() + sub1 coherence.Subscriber[utils.Customer] + timeout = time.Second * 200 + messageCount counter + topicName = fmt.Sprintf("my-topic-java-server-%v", createOnServer) + maxMessages = 5_000 + pub1 coherence.Publisher[utils.Customer] + ) + + session1, topic1 := getSessionAndTopic[utils.Customer](g, topicName) + defer session1.Close() + + sub1, err = topic1.CreateSubscriber(ctx, subscriber.InSubscriberGroup("group1")) + g.Expect(err).NotTo(gomega.HaveOccurred()) + + if createOnServer { + // create the topic on the server and publish maxMessages messages + _, err = utils.IssueGetRequest(utils.GetTestContext().RestURL + "/createCustomerTopic/" + topicName + "/" + fmt.Sprintf("%d", maxMessages)) + g.Expect(err).Should(gomega.Not(gomega.HaveOccurred())) + } else { + pub1, err = topic1.CreatePublisher(context.Background(), publisher.WithDefaultOrdering()) + g.Expect(err).ShouldNot(gomega.HaveOccurred()) + + // publish the maxMessages messages + for i := 0; i < maxMessages; i++ { + c := utils.Customer{ + CustomerName: fmt.Sprintf("name-%d", i), + CustomerType: "GOLD", + ID: i, + Class: customerClass, + OutstandingBalance: float32(i) * 1000, + HomeAddress: getAddress(i), + PostalAddress: getAddress(i), + } + + _, err1 := pub1.Publish(ctx, c) + g.Expect(err1).Should(gomega.Not(gomega.HaveOccurred())) + } + } + + // attempt to read the messages + go func() { + var ( + err1 error + response []*subscriber.ReceiveResponse[utils.Customer] + start = time.Now() + subTimeout = timeout - (time.Second * 5) + ) + + for count := 0; count < maxMessages; count++ { + response, err1 = sub1.Receive(context.Background()) + g.Expect(err1).ShouldNot(gomega.HaveOccurred()) + + if len(response) == 0 { + if time.Since(start) > subTimeout { + g.Fail("timeout, receiving messages") + } + time.Sleep(250 * time.Millisecond) + continue + } + + g.Expect(len(response)).To(gomega.Equal(1)) + c := response[0].Value + g.Expect(c.ID).To(gomega.Equal(count), fmt.Sprintf("expected ID to equal %d, but got %d", count, c.ID)) + g.Expect(c.Class).To(gomega.Equal(customerClass)) + g.Expect(c.CustomerName).To(gomega.Equal(fmt.Sprintf("name-%d", count))) + g.Expect(c.OutstandingBalance).To(gomega.Equal(float32(1000) * float32(count))) + g.Expect(c.CustomerType).To(gomega.Equal("GOLD")) + + g.Expect(isValidAddress(c.PostalAddress, count)).To(gomega.BeTrue()) + g.Expect(isValidAddress(c.HomeAddress, count)).To(gomega.BeTrue()) + _, err = sub1.Commit(ctx, response[0].Channel, response[0].Position) + g.Expect(err).ShouldNot(gomega.HaveOccurred()) + messageCount.Increment() + } + }() + + g.Eventually(func() int { return messageCount.Get() }, timeout+(time.Second*10)).Should(gomega.Equal(maxMessages)) + + g.Expect(sub1.Close(ctx)).ShouldNot(gomega.HaveOccurred()) + + err = topic1.Destroy(ctx) + g.Expect(err).ShouldNot(gomega.HaveOccurred()) +} + +func isValidAddress(address utils.CustomerAddress, counter int) bool { + if address.AddressLine1 != fmt.Sprintf("address-line-1-%d", counter) { + return false + } + if address.AddressLine2 != fmt.Sprintf("address-line-2-%d", counter) { + return false + } + if address.City != fmt.Sprintf("City-%d", counter) { + return false + } + if address.State != fmt.Sprintf("State-%d", counter) { + return false + } + if address.Suburb != fmt.Sprintf("Suburb-%d", counter) { + return false + } + if address.PostCode != counter { + return false + } + if address.Class != addressClass { + return false + } + return true +} + +func getAddress(id int) utils.CustomerAddress { + suffix := strconv.Itoa(id) + return utils.CustomerAddress{ + Class: addressClass, + AddressLine1: "address-line-1-" + suffix, + AddressLine2: "address-line-2-" + suffix, + Suburb: "Suburb-" + suffix, + City: "City-" + suffix, + State: "State-" + suffix, + PostCode: id, + } +} diff --git a/test/utils/utils.go b/test/utils/utils.go index cbb0ac5..f8c3773 100644 --- a/test/utils/utils.go +++ b/test/utils/utils.go @@ -496,6 +496,26 @@ type Address struct { PostCode int `json:"postCode"` } +type Customer struct { + Class string `json:"@class"` + ID int `json:"id"` + CustomerName string `json:"customerName"` + HomeAddress CustomerAddress `json:"homeAddress"` + PostalAddress CustomerAddress `json:"postalAddress"` + CustomerType string `json:"customerType"` + OutstandingBalance float32 `json:"outstandingBalance"` +} + +type CustomerAddress struct { + Class string `json:"@class"` + AddressLine1 string `json:"addressLine1"` + AddressLine2 string `json:"addressLine2"` + Suburb string `json:"suburb"` + City string `json:"city"` + State string `json:"state"` + PostCode int `json:"postcode"` +} + // getDockerComposeCommand returns true if we should use "docker-compose" (v1). func useDockerComposeV1() bool { return os.Getenv("DOCKER_COMPOSE_V1") != "" From bcb9984bee44562d3a26ac7db1a632cc5271ee4c Mon Sep 17 00:00:00 2001 From: Tim Middleton Date: Wed, 6 Aug 2025 08:45:30 +0800 Subject: [PATCH 2/5] fix suite test startup --- test/e2e/topics/suite_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/e2e/topics/suite_test.go b/test/e2e/topics/suite_test.go index e03ba8e..c14a59d 100644 --- a/test/e2e/topics/suite_test.go +++ b/test/e2e/topics/suite_test.go @@ -13,5 +13,5 @@ import ( // The entry point for the test suite func TestMain(m *testing.M) { - utils.RunTest(m, 1408, 30000, 8080, false) + utils.RunTest(m, 1408, 30000, 8080, true) } From 08e7a85bf1074fd979613fef516d3efdba9a971d Mon Sep 17 00:00:00 2001 From: Tim Middleton Date: Fri, 15 Aug 2025 10:28:09 +0800 Subject: [PATCH 3/5] More topics updates --- coherence/topics.go | 4 +--- go.mod | 6 +++--- go.sum | 12 ++++++------ 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/coherence/topics.go b/coherence/topics.go index cb8c228..ae9ac7d 100644 --- a/coherence/topics.go +++ b/coherence/topics.go @@ -162,8 +162,6 @@ func GetNamedTopic[V any](ctx context.Context, session *Session, topicName strin return nil, getExistingError("NamedTopic", topicName) } - // check any topic options - session.debug("using existing NamedTopic: %v", existing) return existing, nil } @@ -349,7 +347,7 @@ func newPublisher[V any](session *Session, bt *baseTopicsClient[V], result *publ ordering := options.GetOrdering() if _, ok := ordering.(*publisher.OrderByDefault); ok { // set the defaultOrderSeed to a non -1 value which means to use this number for the channel - //hash all the time. + // hash all the time. // #nosec G404 -- math/rand is fine here for non-security use tp.defaultOrderingSeed = rand.Int32() % tp.channelCount } diff --git a/go.mod b/go.mod index 1f557ba..73eb970 100644 --- a/go.mod +++ b/go.mod @@ -11,13 +11,13 @@ toolchain go1.23.7 require ( github.com/google/uuid v1.6.0 - golang.org/x/text v0.26.0 + golang.org/x/text v0.28.0 google.golang.org/grpc v1.73.0 google.golang.org/protobuf v1.36.6 ) require ( - golang.org/x/net v0.41.0 // indirect - golang.org/x/sys v0.33.0 // indirect + golang.org/x/net v0.43.0 // indirect + golang.org/x/sys v0.35.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect ) diff --git a/go.sum b/go.sum index 67b529a..d0d3cbe 100644 --- a/go.sum +++ b/go.sum @@ -20,12 +20,12 @@ go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5J go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= -golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= -golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= -golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= -golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= -golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= +golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= +golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= +golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= +golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= +golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a h1:v2PbRU4K3llS09c7zodFpNePeamkAwG3mPrAery9VeE= google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= From 472296d944d42ce517037e322a2dd4eb280d3139 Mon Sep 17 00:00:00 2001 From: Tim Middleton Date: Fri, 15 Aug 2025 10:33:22 +0800 Subject: [PATCH 4/5] Update test deps --- test/go.mod | 6 +++--- test/go.sum | 3 +++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/test/go.mod b/test/go.mod index 658f925..d9b8aa5 100644 --- a/test/go.mod +++ b/test/go.mod @@ -17,9 +17,9 @@ require ( require ( github.com/google/go-cmp v0.7.0 // indirect - golang.org/x/net v0.41.0 // indirect - golang.org/x/sys v0.33.0 // indirect - golang.org/x/text v0.26.0 // indirect + golang.org/x/net v0.43.0 // indirect + golang.org/x/sys v0.35.0 // indirect + golang.org/x/text v0.28.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect google.golang.org/grpc v1.73.0 // indirect google.golang.org/protobuf v1.36.6 // indirect diff --git a/test/go.sum b/test/go.sum index b754ff0..ea91fb9 100644 --- a/test/go.sum +++ b/test/go.sum @@ -32,10 +32,13 @@ golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= +golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= +golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= golang.org/x/tools v0.33.0 h1:4qz2S3zmRxbGIhDIAgjxvFutSvH5EfnsYrRBj0UI0bc= golang.org/x/tools v0.33.0/go.mod h1:CIJMaWEY88juyUfo7UbgPqbC8rU2OqfAV1h2Qp0oMYI= google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a h1:v2PbRU4K3llS09c7zodFpNePeamkAwG3mPrAery9VeE= From b7305924099e7b7f5891721d68ce89f74df5bf5d Mon Sep 17 00:00:00 2001 From: Tim Middleton Date: Fri, 15 Aug 2025 10:48:52 +0800 Subject: [PATCH 5/5] Fix deps --- go.mod | 4 ++-- go.sum | 8 ++++---- test/go.sum | 15 +++++---------- 3 files changed, 11 insertions(+), 16 deletions(-) diff --git a/go.mod b/go.mod index 73eb970..2d5ae43 100644 --- a/go.mod +++ b/go.mod @@ -17,7 +17,7 @@ require ( ) require ( - golang.org/x/net v0.43.0 // indirect - golang.org/x/sys v0.35.0 // indirect + golang.org/x/net v0.41.0 // indirect + golang.org/x/sys v0.33.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect ) diff --git a/go.sum b/go.sum index d0d3cbe..2f70822 100644 --- a/go.sum +++ b/go.sum @@ -20,10 +20,10 @@ go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5J go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= -golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= -golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= -golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= -golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= +golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= +golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= +golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a h1:v2PbRU4K3llS09c7zodFpNePeamkAwG3mPrAery9VeE= diff --git a/test/go.sum b/test/go.sum index ea91fb9..be3bedd 100644 --- a/test/go.sum +++ b/test/go.sum @@ -28,19 +28,14 @@ go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5J go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= -golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= -golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= -golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= -golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= +golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= -golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= -golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= -golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= +golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= -golang.org/x/tools v0.33.0 h1:4qz2S3zmRxbGIhDIAgjxvFutSvH5EfnsYrRBj0UI0bc= -golang.org/x/tools v0.33.0/go.mod h1:CIJMaWEY88juyUfo7UbgPqbC8rU2OqfAV1h2Qp0oMYI= +golang.org/x/tools v0.35.0 h1:mBffYraMEf7aa0sB+NuKnuCy8qI/9Bughn8dC2Gu5r0= +golang.org/x/tools v0.35.0/go.mod h1:NKdj5HkL/73byiZSJjqJgKn3ep7KjFkBOkR/Hps3VPw= google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a h1:v2PbRU4K3llS09c7zodFpNePeamkAwG3mPrAery9VeE= google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok=