Skip to content

Commit a712bea

Browse files
fix comments
1 parent 54cdc5b commit a712bea

3 files changed

Lines changed: 152 additions & 2 deletions

File tree

clade-info.md

Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
# Prebid Server Java — Adapter Porting Notes
2+
3+
## Środowisko
4+
5+
- **Go repo:** `C:\Users\Lenovo\projects\prebid-server`
6+
- **Java repo:** `C:\Users\Lenovo\IdeaProjects\prebid-server-java`
7+
- **IDE:** IntelliJ IDEA
8+
9+
---
10+
11+
## Task 1: Insticator — port z Go PR #4726
12+
13+
**Issue Java:** https://github.com/prebid/prebid-server-java/issues/4481
14+
**Go PR:** https://github.com/prebid/prebid-server/pull/4726
15+
16+
### Zmiana: DSP seat z `TypedBid``ExtBidPrebidMeta.seat`
17+
18+
Go adapter ustawiał `Seat` na `TypedBid` co powodowało odrzucanie bidów przez `alternateBidderCodes`. Fix: przenieść seat do `bid.ext.prebid.meta.seat`.
19+
20+
### Zmodyfikowane pliki
21+
22+
**`InsticatorBidder.java`**
23+
- Nowa metoda `modifyBidExt(bid, bidType, seat)` — wzorzec z Criteo
24+
- Ustawia `bid.ext.prebid.meta.mediaType` i `bid.ext.prebid.meta.seat`
25+
- `extractBids` iteruje przez `SeatBid` i przekazuje `seatBid.getSeat()`
26+
27+
**Testy i fixture**
28+
- `InsticatorBidderTest.java` — zaktualizowane asserty na `bid.ext.prebid.meta`
29+
- `test-insticator-bid-response.json` — dodano `"seat": "dsp_seat"` do seatbid
30+
- `test-auction-insticator-response.json` — dodano `"mediaType"` i `"seat"` do meta
31+
32+
---
33+
34+
## Task 2: Alliance Gravity — nowy adapter
35+
36+
**Issue Java:** https://github.com/prebid/prebid-server-java/issues/4403
37+
**Go PR:** https://github.com/prebid/prebid-server/pull/4522
38+
39+
### Stworzone pliki
40+
41+
| Plik | Ścieżka |
42+
|------|---------|
43+
| Bidder | `src/main/java/org/prebid/server/bidder/alliancegravity/AllianceGravityBidder.java` |
44+
| Ext model | `src/main/java/org/prebid/server/proto/openrtb/ext/request/alliancegravity/ExtImpAllianceGravity.java` |
45+
| Spring config | `src/main/java/org/prebid/server/spring/config/bidder/AllianceGravityConfiguration.java` |
46+
| Bidder YAML | `src/main/resources/bidder-config/alliancegravity.yaml` |
47+
| Params JSON | `src/main/resources/static/bidder-params/alliance_gravity.json` |
48+
| Unit test | `src/test/java/org/prebid/server/bidder/alliancegravity/AllianceGravityBidderTest.java` |
49+
| IT test | `src/test/java/org/prebid/server/it/AllianceGravityTest.java` |
50+
| IT fixtures | `src/test/resources/org/prebid/server/it/openrtb2/alliancegravity/` (4 pliki) |
51+
| test-application.properties | dodano 2 linie dla `alliancegravity` |
52+
53+
---
54+
55+
## Kluczowe wzorce i gotchas
56+
57+
### Nazwa bidddera z podkreśleniem (np. `alliance_gravity`)
58+
59+
| Element | Wartość |
60+
|---------|---------|
61+
| `BIDDER_NAME` w Configuration.java | `"alliance_gravity"` (z podkreśleniem) |
62+
| Klucz YAML w `bidder-config/*.yaml` | `alliancegravity` (bez podkreślenia) |
63+
| `@ConfigurationProperties` prefix | `"adapters.alliancegravity"` (bez podkreślenia) |
64+
| Plik params JSON | `alliance_gravity.json` (Z podkreśleniem) ← WAŻNE |
65+
| `imp.ext` w auction request (IT test) | `"alliance_gravity"` (z podkreśleniem) |
66+
67+
**Wzorzec:** identyczny jak `EmxDigital` (`emxdigital.yaml` + `BIDDER_NAME = "emx_digital"`)
68+
69+
### Logika adaptera
70+
71+
```
72+
makeHttpRequests:
73+
- parsuje ExtImpAllianceGravity.srId z imp.ext.bidder.srid
74+
- zastępuje imp.ext na ExtPrebid.of(ExtImpPrebid(storedrequest=srId), null)
75+
- wysyła jeden request dla wszystkich impów
76+
77+
makeBids:
78+
- bid type z mtype (1=banner, 2=video, 3=audio, 4=native)
79+
- brakujący/nieznany mtype → BidderError (bid pomijany, reszta dalej)
80+
```
81+
82+
### Obsługa błędów w makeBids
83+
84+
```java
85+
// DOBRZE — błędy per-bid zbierane, reszta działa
86+
private static BidderBid resolveBidderBid(Bid bid, String currency, List<BidderError> errors) {
87+
try {
88+
return BidderBid.of(bid, getBidType(bid, errors), currency);
89+
} catch (PreBidException e) {
90+
errors.add(BidderError.badServerResponse(e.getMessage()));
91+
return null;
92+
}
93+
}
94+
95+
// ŹLE — wyjątek w stream.map() dropuje WSZYSTKIE bidy
96+
.map(bid -> BidderBid.of(bid, getBidType(bid), cur)) // jeśli getBidType rzuci
97+
```
98+
99+
### WireMock equalToJson w IT testach
100+
101+
```java
102+
// Użyj ignoreExtraElements=true żeby PBS-dodane pola nie blokowały matchu
103+
.withRequestBody(equalToJson(jsonFrom("...bid-request.json"), true, true))
104+
// ^ ^
105+
// ignoreArrayOrder ignoreExtraElements
106+
```
107+
108+
- WireMock 3 obsługuje `${json-unit.any-string}` i `${json-unit.any-number}` jako wildcards
109+
- **NIE dodawaj** pól do fixture które adapter usuwa (np. `tid` w `imp.ext` gdy adapter zastępuje całe `ext`)
110+
111+
### IT auction request — format dla biddera z podkreśleniem
112+
113+
```json
114+
"ext": {
115+
"prebid": {
116+
"bidder": {
117+
"alliance_gravity": {
118+
"srid": "test-stored-request-id"
119+
}
120+
}
121+
}
122+
}
123+
```
124+
125+
(NIE `"ext": {"alliance_gravity": {...}}` — PBS może nie znormalizować przy `fail-on-unknown-bidders: true`)
126+
127+
---
128+
129+
## Uruchamianie testów
130+
131+
```bash
132+
# Testy jednostkowe
133+
mvn test -Dtest=AllianceGravityBidderTest -Dcheckstyle.skip=true --no-transfer-progress
134+
135+
# IT test (może wymagać clean gdy są stare pliki w target/)
136+
mvn clean test -Dtest=AllianceGravityTest -Dcheckstyle.skip=true --no-transfer-progress
137+
138+
# Oba naraz
139+
mvn test -Dtest=AllianceGravityBidderTest,AllianceGravityTest -Dcheckstyle.skip=true --no-transfer-progress
140+
```
141+
142+
---
143+
144+
## Wyniki
145+
146+
| Test | Status |
147+
|------|--------|
148+
| `InsticatorBidderTest` (24 testy) | ✅ PASS |
149+
| `InsticatorTest` (IT) | ✅ PASS |
150+
| `AllianceGravityBidderTest` (14 testów) | ✅ PASS |
151+
| `AllianceGravityTest` (IT) | ✅ PASS |

img.png

49.1 KB
Loading

src/test/java/org/prebid/server/it/AdsmovilTest.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,7 @@ public void openrtb2AuctionShouldRespondWithBidsFromAdsmovil() throws IOExceptio
2525
// when
2626
final Response response = responseFor(
2727
"openrtb2/adsmovil/test-auction-adsmovil-request.json",
28-
Endpoint.openrtb2_auction
29-
);
28+
Endpoint.openrtb2_auction);
3029

3130
// then
3231
assertJsonEquals("openrtb2/adsmovil/test-auction-adsmovil-response.json", response, List.of("adsmovil"));

0 commit comments

Comments
 (0)