1. 18 6月, 2022 7 次提交
    • J
      Replace the remaining uses of Marshal.PtrToStructure in core networking (#70900) · 9dfdfbf1
      Jan Kotas 提交于
      * Rename ICMP interop to match Windows SDK names
      9dfdfbf1
    • M
      0666d9d6
    • A
      Remove #define Sleep (#70868) · 0d0fd755
      Aaron Robinson 提交于
      * Remove #define Sleep
      0d0fd755
    • C
      Fix bug in Tar preventing extraction of hardlinks or entries starting with `.\` (#70853) · 051b4828
      Carlos Sanchez 提交于
      * Add PlatformDetection.SupportsHardLinkCreation property.
      
      * Fix how paths are combined/joined and sanitized on extraction, to ensure paths with redundant segments get properly handled.
      
      * Add tests that verify archives with entries whose paths start with .\, including the root folder itself.
      
      * Re-enable the hardlink test, condition it to not run if platform does not support extraction of hardlinks.
      
      * Remove unnecessary test - This same code is already being tested by TarReader_ExtractToFile_Tests.ExtractEntriesWithSlashDotPrefix
      
      * Reuse test code that retrieves memory stream.
      
      * Bump test data package version
      
      * Add missing typeof(PlatformDetection) in ConditionalFact
      Co-authored-by: Ncarlossanlop <carlossanlop@users.noreply.github.com>
      051b4828
    • A
      [wasm] Add support for per-project customization of helix work items (#70461) · 2627ea38
      Ankit Jain 提交于
      * [wasm] Add support for per-project customization of helix work items
      
      Currently, for sending tests to helix:
      1. the project binaries are zipped, as part of the project build
      2. then separate helix targets files build that adds helix items for
         those zip files.
          - for wasm, we test with multiple 'scenarios' - like v8, browser, and
          nodejs.
          - so, 3 helix work items are submitted per zip file
      
      - If a test project needs to have any customizations, for example, for
        testing crypto with a managed implementation, and subtlecrypto, which
        would require:
        - passing different arguments to xharness, in case of managed, and
          subtlecrypto
        - and this should be done only for the browser case
        - Currently, this would need this would need to be done in
        `sendtohelix-wasm.targets` special casing for the test project, and
        scenario.
      
      - We add support for importing `$(ProjectName).helix.targets`, and
        calling a special target in that to add helix items, as needed.
      
      - This targets file can be set in the test project like:
      ```xml
      <HelixTargetsFile Condition="'$(TargetOS)' == 'Browser'">wasm.helix.targets</HelixTargetsFile>
      ```
        - it will get deployed next to the zip file, and picked up automatically
      
      ```xml
      <Project>
        <PropertyGroup>
          <_CryptoProjectName>System.Security.Cryptography.Tests</_CryptoProjectName>
          <System_Security_Cryptography_Tests_TargetName Condition="'$(Scenario))' == 'WasmTestOnBrowser'">System_Security_Cryptography_Tests_Targ
      et</System_Security_Cryptography_Tests_TargetName>
        </PropertyGroup>
      
        <Target Name="System_Security_Cryptography_Tests_Target">
          <ItemGroup>
            <HelixWorkItem Include="$(Scenario)-managed-$(_CryptoProjectName)">
              <PayloadArchive>$(TestArchiveTestsDir)$(_CryptoProjectName).zip</PayloadArchive>
              <Command>$(HelixCommand)</Command>
              <Timeout>$(_workItemTimeout)</Timeout>
            </HelixWorkItem>
      
            <HelixWorkItem Include="$(Scenario)-subtlecrypto-System.Security.Cryptography.Tests">
              <PayloadArchive>$(TestArchiveTestsDir)$(_CryptoProjectName).zip</PayloadArchive>
              <Command>$(HelixCommand)</Command>
              <Timeout>$(_workItemTimeout)</Timeout>
      
              <PreCommands Condition="'$(OS)' == 'Windows_NT'">set &quot;WasmXHarnessArgs=--web-server-use-cors&quot;</PreCommands>
              <PreCommands Condition="'$(OS)' != 'Windows_NT'">export &quot;WasmXHarnessArgs=--web-server-use-cors&quot;</PreCommands>
            </HelixWorkItem>
          </ItemGroup>
        </Target>
      ```
      
      - The targets file *must* have these:
          - a property named like `System_Security_Cryptography_Tests_TargetName`, for a
            test project named `System.Security.Cryptography.Tests`
          - if this property is not set, then the default behavior of adding
            work items will run
          - The target should add any items it needs to to `@(HelixWorkItem)`.
            - Examples of adding these can be seen in `sendtohelix*` project files
      
      - Remember that all these properties, and targets get imported into the
        msbuild *global* namespace, so make sure to use unique names to avoid
        conflicts with other test projects.
      
      Future work: this commit only enables it for wasm/library tests, but it should
      be easy to extract it out, but needs some testing.
      
      * [wasm] Helix: test with, and without subtle crypto
      
      * disable non-wasm builds
      
      * address review feedback
      
      * Address review feedback
      
      * Fix typo
      
      * Revert "disable non-wasm builds"
      
      This reverts commit 7ef99e81f82200189dd3f61eeaf00d6ca4ced6d4.
      
      * Update src/libraries/System.Security.Cryptography/tests/wasm.helix.targets
      Co-authored-by: NEric Erhardt <eric.erhardt@microsoft.com>
      
      * Address review feedback
      
      * remove debug spew
      
      * Change the way helix extension targets are discovered.
      
      The new approach:
      
      To run a custom project specific target for adding/editing @(HelixWorkItem):
      
      - In the project add:
          `<HelixTargetsFile Condition="'$(TargetOS)' == 'Browser'">wasm.helix.targets</HelixTargetsFile>`
      
          - This file gets copied next to the test archive as $(MSBuildProjectName).helix.targets
      
      - In this `wasm.helix.targets` file, add to $(HelixExtensionTargets) to run your custom target
      
      ```xml
        <PropertyGroup Condition="'$(IsRunningLibraryTests)' == 'true' and '$(Scenario)' == 'WasmTestOnBrowser'">
          <HelixExtensionTargets>$(HelixExtensionTargets);_AddHelixCrypoItems</HelixExtensionTargets>
      ```
      
      - The extension target will be called after the default items are added
        to `@(HelixWorkItem)`.
      - Useful properties to condition on: $(Scenario), $(IsRunningLibraryTests)
      - And add to, change, or remove from @(HelixWorkItem)
      
      Example:
      ```xml
        <Target Name="_AddHelixCrypoItems">
          <ItemGroup>
            <!-- remove the existing item -->
            <HelixWorkItem Remove="@(HelixWorkItem)" Condition="'%(OriginalFileName)' == '$(_CryptoProjectName)'" />
      
              <!-- add two new ones - managed, and subtylecrypto -->
            <HelixWorkItem Include="$(WorkItemPrefix)managed-$(_CryptoProjectName)">
              <PayloadArchive>$(TestArchiveTestsDir)$(_CryptoProjectName).zip</PayloadArchive>
              <Command>$(HelixCommand)</Command>
              <Timeout>$(_workItemTimeout)</Timeout>
              <OriginalFileName>$(_CryptoProjectName)</OriginalFileName>
            </HelixWorkItem>
      
            <HelixWorkItem Include="$(WorkItemPrefix)subtlecrypto-$(_CryptoProjectName)">
              <PayloadArchive>$(TestArchiveTestsDir)$(_CryptoProjectName).zip</PayloadArchive>
              <Command>$(HelixCommand)</Command>
              <Timeout>$(_workItemTimeout)</Timeout>
              <OriginalFileName>$(_CryptoProjectName)</OriginalFileName>
      
              <PreCommands Condition="'$(OS)' == 'Windows_NT'">set &quot;WasmXHarnessArgs=%WasmXHarnessArgs% --web-server-use-cop&quot;</PreCommands>
              <PreCommands Condition="'$(OS)' != 'Windows_NT'">export &quot;WasmXHarnessArgs=$WasmXHarnessArgs --web-server-use-cop&quot;</PreCommands>
            </HelixWorkItem>
      
            <_CryptoHelixItem Include="@(HelixWorkItem)"
                              Condition="$([System.String]::new('%(HelixWorkItem.Identity)').EndsWith('-$(_CryptoProjectName)'))" />
          </ItemGroup>
      
          <Error Text="Something went wrong. Expected to have only two work items for $(_CryptoProjectName). But got @(_CryptoHelixItem)"
                 Condition="@(_CryptoHelixItem->Count()) != 2" />
        </Target>
      ```
      
      * cleanup
      
      * Move WBT specific stuff into the target too. This will make it simpler to move it off into a targets file later
      
      * fix build
      
      * fix libtests
      
      * fix wbt
      
      * [wasm] Bump helix timeout to 90mins for debugger tests on windows
      Co-authored-by: NEric Erhardt <eric.erhardt@microsoft.com>
      2627ea38
    • E
      Add event to capture min/max threads (#70063) · 41d9c1cc
      Eduardo Velarde 提交于
      Event ThreadPoolMinMaxThreads added. 
      
      Parameters are:
                  ushort MinWorkerThreads
                  ushort MaxWorkerThreads
                  ushort MinIOCompletionThreads
                  ushort MaxIOCompletionThreads
                  ushort ClrInstanceID
      
      It is fired in the ThreadPool constructor and in the SetMinThreads/SetMaxThreads functions.
      41d9c1cc
    • K
  2. 17 6月, 2022 33 次提交