From f37e3766c4af98fe17e8846704f0484d5c0142c4 Mon Sep 17 00:00:00 2001
From: Antoine Toulme <antoine@lunar-ocean.com>
Date: Wed, 31 Jan 2024 04:58:03 -0800
Subject: [PATCH 1/2] [mdatagen] add generated test to check config struct
 (#9438)

**Description:**
Add a generated test that checks the config struct using
`componenttest.CheckConfigStruct`.
---
 .../add_generated_tests_check_config.yaml     | 25 +++++++++++++++++++
 cmd/mdatagen/templates/component_test.go.tmpl |  4 +++
 2 files changed, 29 insertions(+)
 create mode 100755 .chloggen/add_generated_tests_check_config.yaml

diff --git a/.chloggen/add_generated_tests_check_config.yaml b/.chloggen/add_generated_tests_check_config.yaml
new file mode 100755
index 00000000000..25eaf93f55c
--- /dev/null
+++ b/.chloggen/add_generated_tests_check_config.yaml
@@ -0,0 +1,25 @@
+# Use this changelog template to create an entry for release notes.
+
+# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix'
+change_type: enhancement
+
+# The name of the component, or a single word describing the area of concern, (e.g. otlpreceiver)
+component: mdatagen
+
+# A brief description of the change.  Surround your text with quotes ("") if it needs to start with a backtick (`).
+note: Add a generated test that checks the config struct using `componenttest.CheckConfigStruct`
+
+# One or more tracking issues or pull requests related to the change
+issues: [9438]
+
+# (Optional) One or more lines of additional information to render under the primary note.
+# These lines will be padded with 2 spaces and then inserted directly into the document.
+# Use pipe (|) for multiline entries.
+subtext:
+
+# Optional: The change log or logs in which this entry should be included.
+# e.g. '[user]' or '[user, api]'
+# Include 'user' if the change is relevant to end users.
+# Include 'api' if there is a change to a library API.
+# Default: '[user]'
+change_logs: []
\ No newline at end of file
diff --git a/cmd/mdatagen/templates/component_test.go.tmpl b/cmd/mdatagen/templates/component_test.go.tmpl
index 94739cb73f9..dc1f67eea03 100644
--- a/cmd/mdatagen/templates/component_test.go.tmpl
+++ b/cmd/mdatagen/templates/component_test.go.tmpl
@@ -54,6 +54,10 @@ func (aneh *assertNoErrorHost) ReportFatalError(err error) {
 }
 
 
+func TestCheckConfigStruct(t *testing.T) {
+	componenttest.CheckConfigStruct(NewFactory().CreateDefaultConfig())
+}
+
 {{ if isExporter }}
 func Test_ComponentLifecycle(t *testing.T) {
 	factory := NewFactory()

From 203ae9b4e2034d82410ef705d4822a34bad6eaa1 Mon Sep 17 00:00:00 2001
From: Tyler Helmuth <12352919+TylerHelmuth@users.noreply.github.com>
Date: Wed, 31 Jan 2024 15:40:39 -0700
Subject: [PATCH 2/2] Parallelizing contrib check (#9449)

**Description:**
Implements a job matrix for the contrib checks. If we think it would be
worth it, we could add a setup job to download the repo only 1 time.

**Link to tracking Issue:**

Related to
https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/30880
---
 .github/workflows/contrib-tests.yml | 35 ++++++++++++++++++++++++++---
 1 file changed, 32 insertions(+), 3 deletions(-)

diff --git a/.github/workflows/contrib-tests.yml b/.github/workflows/contrib-tests.yml
index aa5e8b2f377..6acd3e5bc42 100644
--- a/.github/workflows/contrib-tests.yml
+++ b/.github/workflows/contrib-tests.yml
@@ -16,10 +16,22 @@ permissions:
   contents: read
 
 jobs:
-  contrib_tests:
+  contrib-tests-matrix:
     runs-on: ubuntu-latest
     if: ${{ !contains(github.event.pull_request.labels.*.name, 'Skip Contrib Tests') }}
-
+    strategy:
+      matrix:
+        group:
+          - receiver-0
+          - receiver-1
+          - processor
+          - exporter
+          - extension
+          - connector
+          - internal
+          - pkg
+          - cmd
+          - other
     steps:
       - name: Checkout Repo
         uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
@@ -32,4 +44,21 @@ jobs:
         run: |
           contrib_path=/tmp/opentelemetry-collector-contrib
           git clone --depth=1 https://github.com/open-telemetry/opentelemetry-collector-contrib.git $contrib_path
-          make CONTRIB_PATH=$contrib_path SKIP_RESTORE_CONTRIB=true check-contrib
+          make CONTRIB_PATH=$contrib_path SKIP_RESTORE_CONTRIB=true GROUP=${{ matrix.group }} check-contrib  
+
+  contrib_tests:
+    runs-on: ubuntu-latest
+    if: ${{ !contains(github.event.pull_request.labels.*.name, 'Skip Contrib Tests') }}
+    needs: [ contrib-tests-matrix ]
+    steps:
+      - name: Print result
+        run: echo ${{ needs.contrib-tests-matrix.result }}
+      - name: Interpret result
+        run: |
+          if [[ success == ${{ needs.contrib-tests-matrix.result }} ]]
+          then
+            echo "All matrix jobs passed!"
+          else
+            echo "One or more matrix jobs failed."
+            false
+          fi