-
Notifications
You must be signed in to change notification settings - Fork 0
/
int_test.go
215 lines (192 loc) · 7.85 KB
/
int_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
package client_sdk_go
import (
"context"
"github.com/awakari/client-sdk-go/api"
"github.com/awakari/client-sdk-go/model"
"github.com/awakari/client-sdk-go/model/subscription"
"github.com/awakari/client-sdk-go/model/subscription/condition"
"github.com/awakari/client-sdk-go/model/usage"
"github.com/cloudevents/sdk-go/binding/format/protobuf/v2/pb"
"github.com/google/uuid"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"google.golang.org/grpc/metadata"
"os"
"testing"
"time"
)
const userId = "test-user-0"
const usageUserId = "" // make it equal to userId when using user-specific limits
var caPath = os.Getenv("CA_PATH")
var clientCertPath = os.Getenv("CLIENT_CERT_PATH")
var clientPrivateKeyPath = os.Getenv("CLIENT_PRIVATE_KEY_PATH")
var apiUri = os.Getenv("API_URI")
func TestPublicApiUsage(t *testing.T) {
if os.Getenv("CI") != "" {
t.Skip("Skipping test in CI environment")
}
ctx, cancel := context.WithTimeout(context.TODO(), 1*time.Minute)
defer cancel()
// load TLS certificates 1st
caCrt, err := os.ReadFile(caPath)
if err != nil {
panic(err)
}
clientCrt, err := os.ReadFile(clientCertPath)
if err != nil {
panic(err)
}
clientKey, err := os.ReadFile(clientPrivateKeyPath)
if err != nil {
panic(err)
}
// init the client
var client api.Client
client, err = api.
NewClientBuilder().
CertAuthority(caCrt).
ClientKeyPair(clientCrt, clientKey).
ApiUri(apiUri).
Build()
require.Nil(t, err)
defer client.Close()
// Get the initial Subscriptions API Usage
var usageSubsStart usage.Usage
usageSubsStart, err = client.ReadUsage(ctx, usageUserId, usage.SubjectSubscriptions)
assert.Nil(t, err)
// Create a Subscription
subData := subscription.Data{
Description: "test subscription 0",
Enabled: true,
Condition: condition.NewBuilder().
AttributeKey("tags").
AnyOfWords("Neutrino").
BuildTextCondition(),
}
var subId string
subId, err = client.CreateSubscription(ctx, userId, subData)
assert.Nil(t, err)
// Check the Subscriptions API Usage change
var usageSubs usage.Usage
usageSubs, err = client.ReadUsage(ctx, usageUserId, usage.SubjectSubscriptions)
assert.Nil(t, err)
assert.Equal(t, usageSubsStart.Count+1, usageSubs.Count)
assert.Equal(t, usageSubsStart.CountTotal+1, usageSubs.CountTotal)
// Open a Read Stream
var r model.Reader[[]*pb.CloudEvent]
r, err = client.OpenMessagesReader(ctx, userId, subId, 16)
assert.Nil(t, err)
defer r.Close()
// Get the initial Publish Messages API Usage
var usagePubMsgsStart usage.Usage
usagePubMsgsStart, err = client.ReadUsage(ctx, usageUserId, usage.SubjectPublishEvents)
assert.Nil(t, err)
// Write a Message
var w model.Writer[*pb.CloudEvent]
w, err = client.OpenMessagesWriter(ctx, userId)
assert.Nil(t, err)
defer w.Close()
msgSend := &pb.CloudEvent{
Id: uuid.NewString(),
Source: "http://arxiv.org/abs/2305.06364",
SpecVersion: "1.0",
Type: "com.github.awakari.producer-rss",
Attributes: map[string]*pb.CloudEventAttributeValue{
"summary": {
Attr: &pb.CloudEventAttributeValue_CeString{
CeString: "<p>We propose that the dark matter of our universe could be sterile neutrinos which reside within the twin sector of a mirror twin Higgs model. In our scenario, these particles are produced through a version of the Dodelson-Widrow mechanism that takes place entirely within the twin sector, yielding a dark matter candidate that is consistent with X-ray and gamma-ray line constraints. Furthermore, this scenario can naturally avoid the cosmological problems that are typically encountered in mirror twin Higgs models. In particular, if the sterile neutrinos in the Standard Model sector decay out of equilibrium, they can heat the Standard Model bath and reduce the contributions of the twin particles to $N_\\mathrm{eff}$. Such decays also reduce the effective temperature of the dark matter, thereby relaxing constraints from large-scale structure. The sterile neutrinos included in this model are compatible with the seesaw mechanism for generating Standard Model neutrino masses. </p> ",
},
},
"tags": {
Attr: &pb.CloudEventAttributeValue_CeString{
CeString: "neutrino dark matter cosmology higgs standard model dodelson-widrow",
},
},
"title": {
Attr: &pb.CloudEventAttributeValue_CeString{
CeString: "Twin Sterile Neutrino Dark Matter. (arXiv:2305.06364v1 [hep-ph])",
},
},
},
Data: &pb.CloudEvent_TextData{
TextData: "",
},
}
var writtenCount uint32
writtenCount, err = w.WriteBatch([]*pb.CloudEvent{msgSend})
assert.Equal(t, uint32(1), writtenCount)
assert.Nil(t, err)
// Check the Publish Messages API Usage change
var usagePubMsgs usage.Usage
usagePubMsgs, err = client.ReadUsage(ctx, usageUserId, usage.SubjectPublishEvents)
assert.Nil(t, err)
assert.Equal(t, usagePubMsgsStart.Count+1, usagePubMsgs.Count)
assert.Equal(t, usagePubMsgsStart.CountTotal+1, usagePubMsgs.CountTotal)
// Read the Message by the Subscription
var msgsRead []*pb.CloudEvent
msgsRead, err = r.Read()
assert.Nil(t, err)
if err == nil {
assert.Equal(t, 1, len(msgsRead))
assert.Equal(t, msgSend.Id, msgsRead[0].Id)
}
// Delete the Subscription to clean up
err = client.DeleteSubscription(ctx, userId, subId)
assert.Nil(t, err)
// Check the Subscriptions API Usage change
usageSubs, err = client.ReadUsage(ctx, usageUserId, usage.SubjectSubscriptions)
assert.Nil(t, err)
assert.Equal(t, usageSubsStart.Count, usageSubs.Count)
assert.Equal(t, usageSubsStart.CountTotal, usageSubs.CountTotal)
}
func TestInternalWriter(t *testing.T) {
if os.Getenv("CI") != "" {
t.Skip("Skipping test in CI environment")
}
ctx, cancel := context.WithTimeout(context.TODO(), 1*time.Minute)
defer cancel()
ctx = metadata.AppendToOutgoingContext(ctx, "x-awakari-group-id", "test-group-0")
var client api.Client
var err error
client, err = api.
NewClientBuilder().
WriterUri(apiUri).
Build()
require.Nil(t, err)
defer client.Close()
// Write a Message
var w model.Writer[*pb.CloudEvent]
w, err = client.OpenMessagesWriter(ctx, userId)
assert.Nil(t, err)
defer w.Close()
msgSend := &pb.CloudEvent{
Id: uuid.NewString(),
Source: "http://arxiv.org/abs/2305.06364",
SpecVersion: "1.0",
Type: "com.github.awakari.producer-rss",
Attributes: map[string]*pb.CloudEventAttributeValue{
"summary": {
Attr: &pb.CloudEventAttributeValue_CeString{
CeString: "<p>We propose that the dark matter of our universe could be sterile neutrinos which reside within the twin sector of a mirror twin Higgs model. In our scenario, these particles are produced through a version of the Dodelson-Widrow mechanism that takes place entirely within the twin sector, yielding a dark matter candidate that is consistent with X-ray and gamma-ray line constraints. Furthermore, this scenario can naturally avoid the cosmological problems that are typically encountered in mirror twin Higgs models. In particular, if the sterile neutrinos in the Standard Model sector decay out of equilibrium, they can heat the Standard Model bath and reduce the contributions of the twin particles to $N_\\mathrm{eff}$. Such decays also reduce the effective temperature of the dark matter, thereby relaxing constraints from large-scale structure. The sterile neutrinos included in this model are compatible with the seesaw mechanism for generating Standard Model neutrino masses. </p> ",
},
},
"tags": {
Attr: &pb.CloudEventAttributeValue_CeString{
CeString: "neutrino dark matter cosmology higgs standard model dodelson-widrow",
},
},
"title": {
Attr: &pb.CloudEventAttributeValue_CeString{
CeString: "Twin Sterile Neutrino Dark Matter. (arXiv:2305.06364v1 [hep-ph])",
},
},
},
Data: &pb.CloudEvent_TextData{
TextData: "",
},
}
var writtenCount uint32
writtenCount, err = w.WriteBatch([]*pb.CloudEvent{msgSend})
assert.Equal(t, uint32(1), writtenCount)
assert.Nil(t, err)
}