[fix]修正UdpServer在接收广播时连续启动接收的错误,在StarAgent中,此时可能收到广播包,SocketFlags是Broadcast,需要清空,否则报错“参考的对象类型不支持尝试的操作”; 无需设置SocketOptionName.PacketInformation,在ReceiveMessageFromAsync时会自动设置,并且支持ipv6;
石头 编写于 2024-10-10 00:36:00 石头 提交于 2024-10-10 00:45:43
X
using System.IO;
using NewLife.Security;
using XCode;
using XCode.Membership;
using Xunit;

namespace XUnitTest.XCode.DataAccessLayer
{
    public class DAL_Backup_Tests
    {
        [Fact]
        public void BackupTest()
        {
            var n = User.Meta.Count;
            var dal = User.Meta.Session.Dal;
            var table = User.Meta.Table.DataTable;

            dal.Backup(table, $"data/{table.Name}.table");
            dal.Backup(table, $"data/{table.Name}.gz");
        }

        [Fact]
        public void BackupAllTest()
        {
            var n = User.Meta.Count;
            var dal = User.Meta.Session.Dal;
            var tables = EntityFactory.GetTables(dal.ConnName, false);

            var f = $"data/{dal.ConnName}.zip".GetFullPath();
            if (File.Exists(f)) File.Delete(f);

            dal.BackupAll(tables, $"data/{dal.ConnName}.zip");
        }

        [Fact]
        public void RestoreAllTest()
        {
            try
            {
                var dal = User.Meta.Session.Dal;

                // 随机连接名,得到SQLite连接字符串,实行导入
                User.Meta.ConnName = Rand.NextString(8);

                var dal2 = User.Meta.Session.Dal;

                var rs = dal2.RestoreAll($"data/{dal.ConnName}.zip", null, true, false);
                Assert.NotNull(rs);
            }
            finally
            {
                User.Meta.ConnName = null;
            }
        }
    }
}