-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgrpc_test_client.go
More file actions
75 lines (66 loc) · 1.98 KB
/
Copy pathgrpc_test_client.go
File metadata and controls
75 lines (66 loc) · 1.98 KB
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
package main
import (
"context"
"fmt"
"log"
"time"
"github.com/eyop23/grpc-micro/proto/orderpb"
"github.com/eyop23/grpc-micro/proto/userpb"
"google.golang.org/grpc"
)
func main() {
ctx := context.Background()
// ===== Connect to UserService =====
userConn, err := grpc.Dial("localhost:50051", grpc.WithInsecure())
if err != nil {
log.Fatalf("failed to connect UserService: %v", err)
}
defer userConn.Close()
userClient := userpb.NewUserServiceClient(userConn)
// ===== 1️⃣ Try to Get User by ID (simulate check) =====
userId := "1" // in real world, you might check by email
userResp, err := userClient.GetUser(ctx, &userpb.GetUserRequest{Id: userId})
if err != nil {
log.Fatalf("GetUser failed: %v", err)
}
if userResp.User != nil {
fmt.Printf("User already exists: %+v\n", userResp.User)
} else {
// ===== 2️⃣ Create User =====
createUserRes, err := userClient.CreateUser(ctx, &userpb.CreateUserRequest{
Name: "Eyob Mekonnen",
Email: "eyob@example.com",
})
if err != nil {
log.Fatalf("CreateUser failed: %v", err)
}
userId = createUserRes.User.Id
fmt.Printf("Created User: %+v\n", createUserRes.User)
}
// ===== Connect to OrderService =====
orderConn, err := grpc.Dial("localhost:50052", grpc.WithInsecure())
if err != nil {
log.Fatalf("failed to connect OrderService: %v", err)
}
defer orderConn.Close()
orderClient := orderpb.NewOrderServiceClient(orderConn)
// ===== 3️⃣ Create Order for the User =====
orderRes, err := orderClient.CreateOrder(ctx, &orderpb.CreateOrderRequest{
UserId: userId,
Item: "Laptop",
Quantity: 1,
})
if err != nil {
log.Fatalf("CreateOrder failed: %v", err)
}
fmt.Printf("Created Order: %+v\n", orderRes.Order)
// ===== 4️⃣ Fetch Order =====
time.Sleep(time.Second)
getOrderRes, err := orderClient.GetOrder(ctx, &orderpb.GetOrderRequest{
Id: orderRes.Order.Id,
})
if err != nil {
log.Fatalf("GetOrder failed: %v", err)
}
fmt.Printf("Fetched Order: %+v\n", getOrderRes.Order)
}