Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
148 changes: 148 additions & 0 deletions .github/workflows/auto-mssql2025-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
name: ⚙📚 Automated MS SQL Server 2025 tests
run-name: Tests on MS SQL Server 2025 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}.

on:
push:
branches:
- 'master'
- 'master-*'
paths:
# containers
- 'Containers/mssql/do-mssql-2025'
- 'Containers/mssql/**.sh'
- 'Containers/mssql/**.sql'
# main project - most common part, that may have changes that affect
- 'Orm/Xtensive.Orm/Orm/Providers/**'
- 'Orm/Xtensive.Orm/Orm/Rse/**'
- 'Orm/Xtensive.Orm/Orm/Upgrade/**'
- 'Orm/Xtensive.Orm/Sql/**'
# provider
- 'Orm/Xtensive.Orm.SqlServer/**'
- '!Orm/Xtensive.Orm.SqlServer/**.csproj'
- '!Orm/Xtensive.Orm.SqlServer/NuGetContent/**'
# main test project - any code change
- 'Orm/Xtensive.Orm.Tests/Issues/**'
- 'Orm/Xtensive.Orm.Tests/Storage/**'
- 'Orm/Xtensive.Orm.Tests/Upgrade/**'
# sql tests - general and provider-specific
- 'Orm/Xtensive.Orm.Tests.Sql/**'
- '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
- '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
- '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
- '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
- '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
#- '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
- '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
- '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
# ability to trigger on demand
- 'TestFileForBuildServerTests.txt'
pull_request:
branches:
- 'master'
paths:
# containers
- 'Containers/mssql/do-mssql-2025'
- 'Containers/mssql/**.sh'
- 'Containers/mssql/**.sql'
# main project - most common part, that may have changes that affect
- 'Orm/Xtensive.Orm/Orm/Providers/**'
- 'Orm/Xtensive.Orm/Orm/Rse/**'
- 'Orm/Xtensive.Orm/Orm/Upgrade/**'
- 'Orm/Xtensive.Orm/Sql/**'
# provider
- 'Orm/Xtensive.Orm.SqlServer/**'
- '!Orm/Xtensive.Orm.SqlServer/**.csproj'
- '!Orm/Xtensive.Orm.SqlServer/NuGetContent/**'
# main test project - any code change
- 'Orm/Xtensive.Orm.Tests/Issues/**'
- 'Orm/Xtensive.Orm.Tests/Storage/**'
- 'Orm/Xtensive.Orm.Tests/Upgrade/**'
# sql tests - general and provider-specific
- 'Orm/Xtensive.Orm.Tests.Sql/**'
- '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
- '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
- '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
- '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
- '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
#- '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
- '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
- '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
# ability to trigger on demand
- 'TestFileForBuildServerTests.txt'

pull_request_review:
branches:
- 'master'
paths:
# containers
- 'Containers/mssql/do-mssql-2025'
- 'Containers/mssql/**.sh'
- 'Containers/mssql/**.sql'
# main project - most common part, that may have changes that affect
- 'Orm/Xtensive.Orm/Orm/Providers/**'
- 'Orm/Xtensive.Orm/Orm/Rse/**'
- 'Orm/Xtensive.Orm/Orm/Upgrade/**'
- 'Orm/Xtensive.Orm/Sql/**'
# provider
- 'Orm/Xtensive.Orm.SqlServer/**'
- '!Orm/Xtensive.Orm.SqlServer/**.csproj'
- '!Orm/Xtensive.Orm.SqlServer/NuGetContent/**'
# main test project - any code change
- 'Orm/Xtensive.Orm.Tests/Issues/**'
- 'Orm/Xtensive.Orm.Tests/Storage/**'
- 'Orm/Xtensive.Orm.Tests/Upgrade/**'
# sql tests - general and provider-specific
- 'Orm/Xtensive.Orm.Tests.Sql/**'
- '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**'
- '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**'
- '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**'
- '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**'
- '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**'
#- '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**'
- '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**'
- '!Orm/Xtensive.Orm.Tests.Sql/**.csproj'
# ability to trigger on demand
- 'TestFileForBuildServerTests.txt'

# new commits with the same key will cancel previously run workflows
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

permissions:
contents: read
actions: read
checks: write

jobs:
test_on_mssql2025:
name: Tests on MS SQL Server 2025
strategy:
matrix:
net: [ 'net8.0' ]
# For security reasons we allow test runs either for pushes from the team or for pull-requests after their changes were seen and approved by someone
#
# push filter - to cover pushes from the team to main branch of major version
# first 'pull_request_review' filter - to cover external pull-requests, since there are major security concerns about content of pull-request we cannot allow auto-runs of tests
# second 'pull_request_review' - to cover internal pull-requests that were not covered by 'on push' trigger
#
if: |
github.event_name == 'push'
|| (github.event_name == 'pull_request_review'
&& github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
&& startsWith(github.event.pull_request.base.ref, 'master')
&& github.event.review.state == 'approved')
|| (github.event_name == 'pull_request'
&& github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name
&& !startsWith(github.head_ref, 'master-'))
uses: DataObjects-NET/dataobjects-net/.github/workflows/reusable-storage-dependant-tests.yml@master
with:
storage: mssql2025
build_config: Release
target_framework: ${{ matrix.net }}
test_output_verbosity: minimal
test_run_timeout: 50
run_main: true
run_sql: true
run_extensions: true
publish_raw_results: false
25 changes: 25 additions & 0 deletions .github/workflows/dispatched-mssql-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,11 @@ on:
type: boolean
default: false
required: true
mssql2022:
description: 'MS SQL Server 2025'
type: boolean
default: true
required: true

# new commits with the same key will cancel previously run workflows
concurrency:
Expand Down Expand Up @@ -99,3 +104,23 @@ jobs:
run_sql: true
run_extensions: true
publish_raw_results: true

test_on_mssql2025:
name: Tests on MS SQL Server 2025
if: ${{ inputs.mssql2025 }}
strategy:
matrix:
net: [ 'net8.0', 'net10.0' ]
uses: DataObjects-NET/dataobjects-net/.github/workflows/reusable-storage-dependant-tests.yml@master
with:
storage: mssql2025
build_config: Release
target_framework: ${{ matrix.net }}
specific_sha: ${{ inputs.specific_sha }}
show_all_fails: ${{ fromJSON(inputs.show_all_fails) }}
test_output_verbosity: minimal
test_run_timeout: 50
run_main: true
run_sql: true
run_extensions: true
publish_raw_results: true
34 changes: 34 additions & 0 deletions Containers/mssql/do-mssql-2025
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
FROM mcr.microsoft.com/mssql/server:2025-latest
USER root

# See https://github.com/microsoft/mssql-docker/blob/master/linux/preview/examples/mssql-agent-fts-ha-tools/Dockerfile
# for details
RUN export DEBIAN_FRONTEND=noninteractive
RUN apt-get update

#Actualize time zone database
RUN apt-get install -y tzdata
RUN apt-get install -yq curl
RUN apt-get install -yq apt-transport-https
RUN apt-get install -y gnupg2
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
RUN curl https://packages.microsoft.com/config/ubuntu/24.04/mssql-server-2025.list | tee /etc/apt/sources.list.d/mssql-server.list
RUN apt-get update
RUN apt-get install -y mssql-server-fts
RUN apt-get clean
RUN rm -rf /var/lib/apt/lists

# Create a config directory
RUN mkdir -p /usr/config
WORKDIR /usr/config

# Bundle config source
COPY configure-db.sh /usr/config/
COPY entrypoint.sh /usr/config/
COPY setup.sql /usr/config/

# Grant permissions for to our scripts to be executable
RUN chmod +x /usr/config/entrypoint.sh
RUN chmod +x /usr/config/configure-db.sh

ENTRYPOINT ["./entrypoint.sh"]
8 changes: 7 additions & 1 deletion Orm/Xtensive.Orm.Tests.Framework/Orm.config
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,13 @@

<domain name="mssql2019"
connectionUrl="sqlserver://dotest:dotest@localhost\DO_SQL2019:1419/DO-Tests?MultipleActiveResultSets=True" />

<domain name="mssql2022"
connectionUrl="sqlserver://dotest:dotest@localhost\DO_SQL2022:1422/DO-Tests?MultipleActiveResultSets=True" />

<domain name="mssql2025"
connectionUrl="sqlserver://dotest:dotest@localhost\DO_SQL2022:1425/DO-Tests?MultipleActiveResultSets=True" />

<!-- A hook to have abitity to check and test newer, yet not supported, versions without adding them to the file -->
<!-- This allows to override it in storage configuration files -->
<domain name="mssqlnext"
Expand Down Expand Up @@ -135,6 +138,9 @@
<domain name="mssql2022cs" provider="sqlserver"
connectionString="Data Source=localhost\DO_SQL2022,1422;Initial Catalog=DO-Tests;User ID=dotest;Password=dotest;MultipleActiveResultSets=True;Encrypt=false" />

<domain name="mssql2025cs" provider="sqlserver"
connectionString="Data Source=localhost\DO_SQL2025,1425;Initial Catalog=DO-Tests;User ID=dotest;Password=dotest;MultipleActiveResultSets=True;Encrypt=false" />

<!-- A hook to have abitity to check and test newer, yet not supported, versions without adding them to the file -->
<!-- This allows to override it in storage configuration files -->
<domain name="mssqlnextcs" provider="sqlserver"
Expand Down
2 changes: 1 addition & 1 deletion ReadMe.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ If you forked the repository then make sure that this fix will propagate to your
DataObjects.Net is a persistence and object-relational mapping framework for the Microsoft .NET. It allows developers to define persistent objects as well as business logic directly in C#, Visual Basic or F#. The persistent objects can be retrieved by LINQ queries. Persistent data can be stored in SQL Servers. In contrast to many other ORM frameworks the database model is generated and maintained automatically.

Supported databases:
- MS SQL Server 2016, 2017, 2019, 2022
- MS SQL Server 2016, 2017, 2019, 2022, 2025
- MS Azure SQL Database
- Oracle 10g, 11g
- PostgreSQL 11, 12, 13, 14, 15, 16, 17, 18
Expand Down